From 59cd1add8d0f198c41d98c4c9d7dd613df38e57d Mon Sep 17 00:00:00 2001 From: Gaudenz Alder Date: Mon, 9 Feb 2015 05:42:21 -0500 Subject: [PATCH] 3.1.2.2 release --- ChangeLog | 19 + .../files/editor/mxDefaultKeyHandler-js.html | 2 +- .../files/editor/mxDefaultPopupMenu-js.html | 2 +- .../files/editor/mxDefaultToolbar-js.html | 2 +- docs/js-api/files/editor/mxEditor-js.html | 2 +- .../files/handler/mxCellHighlight-js.html | 2 +- .../js-api/files/handler/mxCellMarker-js.html | 2 +- .../files/handler/mxCellTracker-js.html | 2 +- .../files/handler/mxConnectionHandler-js.html | 2 +- .../files/handler/mxConstraintHandler-js.html | 2 +- .../files/handler/mxEdgeHandler-js.html | 2 +- .../handler/mxEdgeSegmentHandler-js.html | 2 +- .../files/handler/mxElbowEdgeHandler-js.html | 2 +- .../files/handler/mxGraphHandler-js.html | 4 +- docs/js-api/files/handler/mxHandle-js.html | 2 +- .../js-api/files/handler/mxKeyHandler-js.html | 2 +- .../files/handler/mxPanningHandler-js.html | 2 +- .../files/handler/mxPopupMenuHandler-js.html | 2 +- .../js-api/files/handler/mxRubberband-js.html | 2 +- .../handler/mxSelectionCellsHandler-js.html | 2 +- .../files/handler/mxTooltipHandler-js.html | 2 +- .../files/handler/mxVertexHandler-js.html | 2 +- docs/js-api/files/index-txt.html | 2 +- docs/js-api/files/io/mxCellCodec-js.html | 2 +- .../files/io/mxChildChangeCodec-js.html | 2 +- docs/js-api/files/io/mxCodec-js.html | 2 +- docs/js-api/files/io/mxCodecRegistry-js.html | 2 +- .../files/io/mxDefaultKeyHandlerCodec-js.html | 2 +- .../files/io/mxDefaultPopupMenuCodec-js.html | 2 +- .../files/io/mxDefaultToolbarCodec-js.html | 2 +- docs/js-api/files/io/mxEditorCodec-js.html | 2 +- .../files/io/mxGenericChangeCodec-js.html | 2 +- docs/js-api/files/io/mxGraphCodec-js.html | 2 +- docs/js-api/files/io/mxGraphViewCodec-js.html | 2 +- docs/js-api/files/io/mxModelCodec-js.html | 2 +- docs/js-api/files/io/mxObjectCodec-js.html | 2 +- .../js-api/files/io/mxRootChangeCodec-js.html | 2 +- .../js-api/files/io/mxStylesheetCodec-js.html | 2 +- .../files/io/mxTerminalChangeCodec-js.html | 2 +- .../mxGraphAbstractHierarchyCell-js.html | 2 +- .../model/mxGraphHierarchyEdge-js.html | 2 +- .../model/mxGraphHierarchyModel-js.html | 2 +- .../model/mxGraphHierarchyNode-js.html | 2 +- .../model/mxSwimlaneModel-js.html | 2 +- .../hierarchical/mxHierarchicalLayout-js.html | 34 +- .../hierarchical/mxSwimlaneLayout-js.html | 2 +- .../stage/mxCoordinateAssignment-js.html | 14 +- .../stage/mxHierarchicalLayoutStage-js.html | 2 +- .../mxMedianHybridCrossingReduction-js.html | 2 +- .../stage/mxMinimumCycleRemover-js.html | 2 +- .../stage/mxSwimlaneOrdering-js.html | 2 +- .../files/layout/mxCircleLayout-js.html | 2 +- .../files/layout/mxCompactTreeLayout-js.html | 2 +- .../files/layout/mxCompositeLayout-js.html | 2 +- .../files/layout/mxEdgeLabelLayout-js.html | 2 +- .../files/layout/mxFastOrganicLayout-js.html | 2 +- .../js-api/files/layout/mxGraphLayout-js.html | 2 +- .../files/layout/mxParallelEdgeLayout-js.html | 2 +- .../files/layout/mxPartitionLayout-js.html | 2 +- .../files/layout/mxRadialTreeLayout-js.html | 2 +- .../js-api/files/layout/mxStackLayout-js.html | 2 +- docs/js-api/files/model/mxCell-js.html | 2 +- docs/js-api/files/model/mxCellPath-js.html | 2 +- docs/js-api/files/model/mxGeometry-js.html | 2 +- docs/js-api/files/model/mxGraphModel-js.html | 2 +- docs/js-api/files/mxClient-js.html | 6 +- docs/js-api/files/shape/mxActor-js.html | 2 +- docs/js-api/files/shape/mxArrow-js.html | 2 +- docs/js-api/files/shape/mxCloud-js.html | 2 +- docs/js-api/files/shape/mxConnector-js.html | 2 +- docs/js-api/files/shape/mxCylinder-js.html | 2 +- .../files/shape/mxDoubleEllipse-js.html | 2 +- docs/js-api/files/shape/mxEllipse-js.html | 2 +- docs/js-api/files/shape/mxHexagon-js.html | 2 +- docs/js-api/files/shape/mxImageShape-js.html | 2 +- docs/js-api/files/shape/mxLabel-js.html | 2 +- docs/js-api/files/shape/mxLine-js.html | 2 +- docs/js-api/files/shape/mxMarker-js.html | 2 +- docs/js-api/files/shape/mxPolyline-js.html | 2 +- .../files/shape/mxRectangleShape-js.html | 2 +- docs/js-api/files/shape/mxRhombus-js.html | 2 +- docs/js-api/files/shape/mxShape-js.html | 2 +- docs/js-api/files/shape/mxStencil-js.html | 2 +- .../files/shape/mxStencilRegistry-js.html | 2 +- docs/js-api/files/shape/mxSwimlane-js.html | 2 +- docs/js-api/files/shape/mxText-js.html | 2 +- docs/js-api/files/shape/mxTriangle-js.html | 2 +- .../files/util/mxAbstractCanvas2D-js.html | 2 +- docs/js-api/files/util/mxAnimation-js.html | 2 +- .../files/util/mxAutoSaveManager-js.html | 2 +- docs/js-api/files/util/mxClipboard-js.html | 2 +- docs/js-api/files/util/mxConstants-js.html | 2 +- docs/js-api/files/util/mxDictionary-js.html | 2 +- docs/js-api/files/util/mxDivResizer-js.html | 2 +- docs/js-api/files/util/mxDragSource-js.html | 2 +- docs/js-api/files/util/mxEffects-js.html | 2 +- docs/js-api/files/util/mxEvent-js.html | 2 +- docs/js-api/files/util/mxEventObject-js.html | 2 +- docs/js-api/files/util/mxEventSource-js.html | 2 +- docs/js-api/files/util/mxForm-js.html | 2 +- docs/js-api/files/util/mxGuide-js.html | 2 +- docs/js-api/files/util/mxImage-js.html | 2 +- docs/js-api/files/util/mxImageBundle-js.html | 2 +- docs/js-api/files/util/mxImageExport-js.html | 2 +- docs/js-api/files/util/mxLog-js.html | 2 +- docs/js-api/files/util/mxMorphing-js.html | 2 +- docs/js-api/files/util/mxMouseEvent-js.html | 2 +- .../files/util/mxObjectIdentity-js.html | 2 +- .../files/util/mxPanningManager-js.html | 2 +- docs/js-api/files/util/mxPoint-js.html | 2 +- docs/js-api/files/util/mxPopupMenu-js.html | 6 +- docs/js-api/files/util/mxRectangle-js.html | 2 +- docs/js-api/files/util/mxResources-js.html | 2 +- docs/js-api/files/util/mxSvgCanvas2D-js.html | 14 +- docs/js-api/files/util/mxToolbar-js.html | 2 +- docs/js-api/files/util/mxUndoManager-js.html | 2 +- docs/js-api/files/util/mxUndoableEdit-js.html | 2 +- docs/js-api/files/util/mxUrlConverter-js.html | 2 +- docs/js-api/files/util/mxUtils-js.html | 82 ++-- docs/js-api/files/util/mxVmlCanvas2D-js.html | 2 +- docs/js-api/files/util/mxWindow-js.html | 2 +- docs/js-api/files/util/mxXmlCanvas2D-js.html | 2 +- docs/js-api/files/util/mxXmlRequest-js.html | 2 +- docs/js-api/files/view/mxCellEditor-js.html | 2 +- docs/js-api/files/view/mxCellOverlay-js.html | 2 +- docs/js-api/files/view/mxCellRenderer-js.html | 2 +- docs/js-api/files/view/mxCellState-js.html | 2 +- .../files/view/mxCellStatePreview-js.html | 2 +- .../files/view/mxConnectionConstraint-js.html | 2 +- docs/js-api/files/view/mxEdgeStyle-js.html | 2 +- docs/js-api/files/view/mxGraph-js.html | 8 +- .../files/view/mxGraphSelectionModel-js.html | 2 +- docs/js-api/files/view/mxGraphView-js.html | 2 +- .../js-api/files/view/mxLayoutManager-js.html | 2 +- docs/js-api/files/view/mxMultiplicity-js.html | 2 +- docs/js-api/files/view/mxOutline-js.html | 2 +- docs/js-api/files/view/mxPerimeter-js.html | 2 +- docs/js-api/files/view/mxPrintPreview-js.html | 4 +- docs/js-api/files/view/mxSpaceManager-js.html | 2 +- .../js-api/files/view/mxStyleRegistry-js.html | 2 +- docs/js-api/files/view/mxStylesheet-js.html | 2 +- .../files/view/mxSwimlaneManager-js.html | 2 +- .../files/view/mxTemporaryCellStates-js.html | 2 +- docs/js-api/index/Classes.html | 2 +- docs/js-api/index/Classes2.html | 2 +- docs/js-api/index/Cookies.html | 2 +- docs/js-api/index/Events.html | 2 +- docs/js-api/index/Files.html | 2 +- docs/js-api/index/Functions.html | 4 +- docs/js-api/index/Functions10.html | 10 +- docs/js-api/index/Functions11.html | 6 +- docs/js-api/index/Functions12.html | 8 +- docs/js-api/index/Functions13.html | 6 +- docs/js-api/index/Functions14.html | 6 +- docs/js-api/index/Functions15.html | 6 +- docs/js-api/index/Functions16.html | 6 +- docs/js-api/index/Functions17.html | 6 +- docs/js-api/index/Functions18.html | 6 +- docs/js-api/index/Functions19.html | 10 +- docs/js-api/index/Functions2.html | 2 +- docs/js-api/index/Functions3.html | 6 +- docs/js-api/index/Functions4.html | 6 +- docs/js-api/index/Functions5.html | 6 +- docs/js-api/index/Functions6.html | 6 +- docs/js-api/index/Functions7.html | 6 +- docs/js-api/index/Functions8.html | 6 +- docs/js-api/index/Functions9.html | 6 +- docs/js-api/index/General.html | 4 +- docs/js-api/index/General10.html | 10 +- docs/js-api/index/General11.html | 6 +- docs/js-api/index/General12.html | 8 +- docs/js-api/index/General13.html | 6 +- docs/js-api/index/General14.html | 6 +- docs/js-api/index/General15.html | 6 +- docs/js-api/index/General16.html | 6 +- docs/js-api/index/General17.html | 6 +- docs/js-api/index/General18.html | 6 +- docs/js-api/index/General19.html | 6 +- docs/js-api/index/General2.html | 2 +- docs/js-api/index/General20.html | 12 +- docs/js-api/index/General3.html | 6 +- docs/js-api/index/General4.html | 6 +- docs/js-api/index/General5.html | 6 +- docs/js-api/index/General6.html | 6 +- docs/js-api/index/General7.html | 6 +- docs/js-api/index/General8.html | 6 +- docs/js-api/index/General9.html | 6 +- docs/js-api/index/Variables.html | 2 +- docs/js-api/index/Variables10.html | 2 +- docs/js-api/index/Variables11.html | 2 +- docs/js-api/index/Variables12.html | 2 +- docs/js-api/index/Variables13.html | 2 +- docs/js-api/index/Variables14.html | 2 +- docs/js-api/index/Variables15.html | 2 +- docs/js-api/index/Variables2.html | 2 +- docs/js-api/index/Variables3.html | 2 +- docs/js-api/index/Variables4.html | 6 +- docs/js-api/index/Variables5.html | 2 +- docs/js-api/index/Variables6.html | 2 +- docs/js-api/index/Variables7.html | 2 +- docs/js-api/index/Variables8.html | 2 +- docs/js-api/index/Variables9.html | 2 +- docs/js-api/javascript/searchdata.js | 64 +-- docs/js-api/search/FunctionsC.html | 2 +- docs/js-api/search/FunctionsT.html | 2 +- docs/js-api/search/GeneralC.html | 2 +- docs/js-api/search/GeneralE.html | 2 +- docs/js-api/search/GeneralT.html | 2 +- docs/js-api/search/VariablesE.html | 2 +- docs/manual.html | 2 +- docs/manual_javavis.html | 2 +- docs/php-api/javascript/searchdata.js | 128 ++--- dotnet/docs/html/annotated.html | 2 +- ...m_1_1mxgraph_1_1mxBasicCanvas-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxBasicCanvas.html | 2 +- ...classcom_1_1mxgraph_1_1mxCell-members.html | 2 +- .../html/classcom_1_1mxgraph_1_1mxCell.html | 2 +- ...com_1_1mxgraph_1_1mxCellCodec-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxCellCodec.html | 2 +- ...scom_1_1mxgraph_1_1mxCellPath-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxCellPath.html | 2 +- ..._1_1mxgraph_1_1mxCellRenderer-members.html | 2 +- ...classcom_1_1mxgraph_1_1mxCellRenderer.html | 2 +- ...CellRenderer_1_1CanvasFactory-members.html | 2 +- ...ph_1_1mxCellRenderer_1_1CanvasFactory.html | 2 +- ...enderer_1_1ImageCanvasFactory-members.html | 2 +- ...1mxCellRenderer_1_1ImageCanvasFactory.html | 2 +- ...com_1_1mxgraph_1_1mxCellState-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxCellState.html | 2 +- ...lasscom_1_1mxgraph_1_1mxCodec-members.html | 2 +- .../html/classcom_1_1mxgraph_1_1mxCodec.html | 2 +- ...1_1mxgraph_1_1mxCodecRegistry-members.html | 2 +- ...lasscom_1_1mxgraph_1_1mxCodecRegistry.html | 2 +- ...aph_1_1mxConnectionConstraint-members.html | 2 +- ..._1_1mxgraph_1_1mxConnectionConstraint.html | 2 +- ...com_1_1mxgraph_1_1mxConstants-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxConstants.html | 2 +- ...com_1_1mxgraph_1_1mxEdgeStyle-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxEdgeStyle.html | 2 +- ...xgraph_1_1mxFastOrganicLayout-members.html | 2 +- ...com_1_1mxgraph_1_1mxFastOrganicLayout.html | 2 +- ...com_1_1mxgraph_1_1mxGdiCanvas-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxGdiCanvas.html | 2 +- ...m_1_1mxgraph_1_1mxGdiCanvas2D-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxGdiCanvas2D.html | 2 +- ...1mxGdiCanvas2D_1_1CanvasState-members.html | 2 +- ...graph_1_1mxGdiCanvas2D_1_1CanvasState.html | 2 +- ...scom_1_1mxgraph_1_1mxGeometry-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxGeometry.html | 2 +- ...lasscom_1_1mxgraph_1_1mxGraph-members.html | 2 +- .../html/classcom_1_1mxgraph_1_1mxGraph.html | 10 +- ...om_1_1mxgraph_1_1mxGraphModel-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxGraphModel.html | 2 +- ...com_1_1mxgraph_1_1mxGraphView-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxGraphView.html | 2 +- ...aph_1_1mxGraphViewImageReader-members.html | 2 +- ..._1_1mxgraph_1_1mxGraphViewImageReader.html | 2 +- ...1mxgraph_1_1mxGraphViewReader-members.html | 2 +- ...sscom_1_1mxgraph_1_1mxGraphViewReader.html | 2 +- ...m_1_1mxgraph_1_1mxImageBundle-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxImageBundle.html | 2 +- ...m_1_1mxgraph_1_1mxImageCanvas-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxImageCanvas.html | 2 +- ...om_1_1mxgraph_1_1mxModelCodec-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxModelCodec.html | 2 +- ...m_1_1mxgraph_1_1mxObjectCodec-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxObjectCodec.html | 2 +- ...com_1_1mxgraph_1_1mxPerimeter-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxPerimeter.html | 2 +- ...lasscom_1_1mxgraph_1_1mxPoint-members.html | 2 +- .../html/classcom_1_1mxgraph_1_1mxPoint.html | 2 +- ...com_1_1mxgraph_1_1mxRectangle-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxRectangle.html | 2 +- ...mxgraph_1_1mxSaxOutputHandler-members.html | 2 +- ...scom_1_1mxgraph_1_1mxSaxOutputHandler.html | 2 +- ...sscom_1_1mxgraph_1_1mxStencil-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxStencil.html | 2 +- ...1mxgraph_1_1mxStencilRegistry-members.html | 2 +- ...sscom_1_1mxgraph_1_1mxStencilRegistry.html | 2 +- ...1_1mxgraph_1_1mxStyleRegistry-members.html | 2 +- ...lasscom_1_1mxgraph_1_1mxStyleRegistry.html | 2 +- ...om_1_1mxgraph_1_1mxStylesheet-members.html | 2 +- .../classcom_1_1mxgraph_1_1mxStylesheet.html | 2 +- ...1mxgraph_1_1mxStylesheetCodec-members.html | 2 +- ...sscom_1_1mxgraph_1_1mxStylesheetCodec.html | 2 +- ...lasscom_1_1mxgraph_1_1mxUtils-members.html | 2 +- .../html/classcom_1_1mxgraph_1_1mxUtils.html | 2 +- dotnet/docs/html/classes.html | 2 +- .../dir_313caf1132e152dd9b58bea13a4052ca.html | 2 +- .../dir_5dd65160827af56e6353642206b80129.html | 2 +- .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 2 +- .../dir_af89b2be539cdaaafaad341d1e56977e.html | 2 +- .../dir_b39b5091e8d1d2be4b7fc59d57749634.html | 2 +- .../dir_c184e51c84f2c3f0345bbc8a0d75d3e1.html | 2 +- .../dir_eb63608ab2ddc08e14808990907a274d.html | 2 +- .../dir_f2b3bec0b800804983017014eef9ca7d.html | 2 +- dotnet/docs/html/functions.html | 2 +- dotnet/docs/html/functions_b.html | 2 +- dotnet/docs/html/functions_c.html | 2 +- dotnet/docs/html/functions_d.html | 2 +- dotnet/docs/html/functions_e.html | 2 +- dotnet/docs/html/functions_evnt.html | 2 +- dotnet/docs/html/functions_f.html | 2 +- dotnet/docs/html/functions_func.html | 2 +- dotnet/docs/html/functions_func_b.html | 2 +- dotnet/docs/html/functions_func_c.html | 2 +- dotnet/docs/html/functions_func_d.html | 2 +- dotnet/docs/html/functions_func_e.html | 2 +- dotnet/docs/html/functions_func_f.html | 2 +- dotnet/docs/html/functions_func_g.html | 2 +- dotnet/docs/html/functions_func_h.html | 2 +- dotnet/docs/html/functions_func_i.html | 2 +- dotnet/docs/html/functions_func_l.html | 2 +- dotnet/docs/html/functions_func_m.html | 2 +- dotnet/docs/html/functions_func_p.html | 2 +- dotnet/docs/html/functions_func_q.html | 2 +- dotnet/docs/html/functions_func_r.html | 2 +- dotnet/docs/html/functions_func_s.html | 2 +- dotnet/docs/html/functions_func_t.html | 2 +- dotnet/docs/html/functions_func_u.html | 2 +- dotnet/docs/html/functions_func_v.html | 2 +- dotnet/docs/html/functions_func_w.html | 2 +- dotnet/docs/html/functions_g.html | 2 +- dotnet/docs/html/functions_h.html | 2 +- dotnet/docs/html/functions_i.html | 2 +- dotnet/docs/html/functions_l.html | 2 +- dotnet/docs/html/functions_m.html | 2 +- dotnet/docs/html/functions_n.html | 2 +- dotnet/docs/html/functions_o.html | 2 +- dotnet/docs/html/functions_p.html | 2 +- dotnet/docs/html/functions_prop.html | 2 +- dotnet/docs/html/functions_q.html | 2 +- dotnet/docs/html/functions_r.html | 2 +- dotnet/docs/html/functions_s.html | 2 +- dotnet/docs/html/functions_t.html | 2 +- dotnet/docs/html/functions_u.html | 2 +- dotnet/docs/html/functions_v.html | 2 +- dotnet/docs/html/functions_vars.html | 2 +- dotnet/docs/html/functions_vars_b.html | 2 +- dotnet/docs/html/functions_vars_c.html | 2 +- dotnet/docs/html/functions_vars_d.html | 2 +- dotnet/docs/html/functions_vars_e.html | 2 +- dotnet/docs/html/functions_vars_f.html | 2 +- dotnet/docs/html/functions_vars_g.html | 2 +- dotnet/docs/html/functions_vars_h.html | 2 +- dotnet/docs/html/functions_vars_i.html | 2 +- dotnet/docs/html/functions_vars_l.html | 2 +- dotnet/docs/html/functions_vars_m.html | 2 +- dotnet/docs/html/functions_vars_n.html | 2 +- dotnet/docs/html/functions_vars_o.html | 2 +- dotnet/docs/html/functions_vars_p.html | 2 +- dotnet/docs/html/functions_vars_r.html | 2 +- dotnet/docs/html/functions_vars_s.html | 2 +- dotnet/docs/html/functions_vars_t.html | 2 +- dotnet/docs/html/functions_vars_u.html | 2 +- dotnet/docs/html/functions_vars_v.html | 2 +- dotnet/docs/html/functions_vars_w.html | 2 +- dotnet/docs/html/functions_vars_x.html | 2 +- dotnet/docs/html/functions_vars_y.html | 2 +- dotnet/docs/html/functions_w.html | 2 +- dotnet/docs/html/functions_x.html | 2 +- dotnet/docs/html/functions_y.html | 2 +- dotnet/docs/html/hierarchy.html | 2 +- dotnet/docs/html/index.html | 2 +- ...cecom_1_1mxgraph_1_1mxICanvas-members.html | 2 +- .../interfacecom_1_1mxgraph_1_1mxICanvas.html | 2 +- ...com_1_1mxgraph_1_1mxICanvas2D-members.html | 2 +- ...nterfacecom_1_1mxgraph_1_1mxICanvas2D.html | 2 +- ...facecom_1_1mxgraph_1_1mxICell-members.html | 2 +- .../interfacecom_1_1mxgraph_1_1mxICell.html | 2 +- ..._1_1mxgraph_1_1mxIGraphLayout-members.html | 2 +- ...rfacecom_1_1mxgraph_1_1mxIGraphLayout.html | 2 +- ...m_1_1mxgraph_1_1mxIGraphModel-members.html | 2 +- ...erfacecom_1_1mxgraph_1_1mxIGraphModel.html | 2 +- dotnet/docs/html/namespacecom.html | 2 +- dotnet/docs/html/namespacecom_1_1mxgraph.html | 2 +- dotnet/docs/html/namespacemembers.html | 2 +- dotnet/docs/html/namespacemembers_func.html | 2 +- dotnet/docs/html/namespaces.html | 2 +- dotnet/src/view/mxGraph.cs | 4 +- index.html | 6 +- java/build.xml | 6 +- java/docs/allclasses-frame.html | 6 +- java/docs/allclasses-noframe.html | 6 +- .../mxgraph/analysis/StructuralException.html | 12 +- .../class-use/StructuralException.html | 12 +- .../analysis/class-use/mxAnalysisGraph.html | 12 +- .../class-use/mxConstantCostFunction.html | 12 +- .../class-use/mxDistanceCostFunction.html | 12 +- .../class-use/mxFibonacciHeap.Node.html | 12 +- .../analysis/class-use/mxFibonacciHeap.html | 12 +- .../analysis/class-use/mxGraphAnalysis.html | 12 +- .../analysis/class-use/mxGraphGenerator.html | 12 +- .../mxGraphProperties.GraphType.html | 12 +- .../analysis/class-use/mxGraphProperties.html | 12 +- .../analysis/class-use/mxGraphStructure.html | 12 +- .../analysis/class-use/mxICostFunction.html | 12 +- .../analysis/class-use/mxTraversal.html | 12 +- .../analysis/class-use/mxUnionFind.Node.html | 12 +- .../analysis/class-use/mxUnionFind.html | 12 +- .../com/mxgraph/analysis/mxAnalysisGraph.html | 12 +- .../analysis/mxConstantCostFunction.html | 12 +- .../analysis/mxDistanceCostFunction.html | 12 +- .../analysis/mxFibonacciHeap.Node.html | 12 +- .../com/mxgraph/analysis/mxFibonacciHeap.html | 12 +- .../com/mxgraph/analysis/mxGraphAnalysis.html | 12 +- .../mxgraph/analysis/mxGraphGenerator.html | 12 +- .../analysis/mxGraphProperties.GraphType.html | 12 +- .../mxgraph/analysis/mxGraphProperties.html | 12 +- .../mxgraph/analysis/mxGraphStructure.html | 12 +- .../com/mxgraph/analysis/mxICostFunction.html | 12 +- .../com/mxgraph/analysis/mxTraversal.html | 12 +- .../mxgraph/analysis/mxUnionFind.Node.html | 12 +- .../com/mxgraph/analysis/mxUnionFind.html | 12 +- .../com/mxgraph/analysis/package-frame.html | 6 +- .../com/mxgraph/analysis/package-summary.html | 12 +- .../com/mxgraph/analysis/package-tree.html | 12 +- .../com/mxgraph/analysis/package-use.html | 12 +- .../canvas/class-use/mxBasicCanvas.html | 12 +- .../canvas/class-use/mxGraphics2DCanvas.html | 12 +- .../mxGraphicsCanvas2D.CanvasState.html | 12 +- .../canvas/class-use/mxGraphicsCanvas2D.html | 12 +- .../canvas/class-use/mxHtmlCanvas.html | 12 +- .../mxgraph/canvas/class-use/mxICanvas.html | 12 +- .../mxgraph/canvas/class-use/mxICanvas2D.html | 12 +- .../canvas/class-use/mxImageCanvas.html | 12 +- .../mxgraph/canvas/class-use/mxSvgCanvas.html | 12 +- .../mxgraph/canvas/class-use/mxVmlCanvas.html | 12 +- .../com/mxgraph/canvas/mxBasicCanvas.html | 12 +- .../mxgraph/canvas/mxGraphics2DCanvas.html | 12 +- .../mxGraphicsCanvas2D.CanvasState.html | 12 +- .../mxgraph/canvas/mxGraphicsCanvas2D.html | 12 +- .../docs/com/mxgraph/canvas/mxHtmlCanvas.html | 12 +- java/docs/com/mxgraph/canvas/mxICanvas.html | 12 +- java/docs/com/mxgraph/canvas/mxICanvas2D.html | 12 +- .../com/mxgraph/canvas/mxImageCanvas.html | 12 +- java/docs/com/mxgraph/canvas/mxSvgCanvas.html | 12 +- java/docs/com/mxgraph/canvas/mxVmlCanvas.html | 12 +- .../com/mxgraph/canvas/package-frame.html | 6 +- .../com/mxgraph/canvas/package-summary.html | 12 +- .../docs/com/mxgraph/canvas/package-tree.html | 12 +- java/docs/com/mxgraph/canvas/package-use.html | 12 +- .../class-use/mxConstCostFunction.html | 12 +- .../class-use/mxCostFunction.html | 12 +- .../class-use/mxDoubleValCostFunction.html | 12 +- .../costfunction/mxConstCostFunction.html | 12 +- .../mxgraph/costfunction/mxCostFunction.html | 12 +- .../costfunction/mxDoubleValCostFunction.html | 12 +- .../mxgraph/costfunction/package-frame.html | 6 +- .../mxgraph/costfunction/package-summary.html | 12 +- .../mxgraph/costfunction/package-tree.html | 12 +- .../com/mxgraph/costfunction/package-use.html | 12 +- .../class-use/mxGeneratorConstFunction.html | 12 +- .../class-use/mxGeneratorFunction.html | 12 +- .../class-use/mxGeneratorRandomFunction.html | 12 +- .../mxGeneratorRandomIntFunction.html | 12 +- .../mxGeneratorConstFunction.html | 12 +- .../mxGeneratorFunction.html | 12 +- .../mxGeneratorRandomFunction.html | 12 +- .../mxGeneratorRandomIntFunction.html | 12 +- .../generatorfunction/package-frame.html | 6 +- .../generatorfunction/package-summary.html | 12 +- .../generatorfunction/package-tree.html | 12 +- .../generatorfunction/package-use.html | 12 +- .../com/mxgraph/io/class-use/mxCellCodec.html | 12 +- .../io/class-use/mxChildChangeCodec.html | 12 +- .../com/mxgraph/io/class-use/mxCodec.html | 12 +- .../mxgraph/io/class-use/mxCodecRegistry.html | 12 +- .../com/mxgraph/io/class-use/mxGdCodec.html | 12 +- .../class-use/mxGdCodec.mxGDParseState.html | 12 +- .../io/class-use/mxGenericChangeCodec.html | 12 +- .../mxgraph/io/class-use/mxGraphMlCodec.html | 12 +- .../mxgraph/io/class-use/mxModelCodec.html | 12 +- .../mxgraph/io/class-use/mxObjectCodec.html | 12 +- .../io/class-use/mxRootChangeCodec.html | 12 +- .../io/class-use/mxStylesheetCodec.html | 12 +- .../io/class-use/mxTerminalChangeCodec.html | 12 +- .../graphml/class-use/mxGraphMlConstants.html | 12 +- .../io/graphml/class-use/mxGraphMlData.html | 12 +- .../io/graphml/class-use/mxGraphMlEdge.html | 12 +- .../io/graphml/class-use/mxGraphMlGraph.html | 12 +- .../io/graphml/class-use/mxGraphMlKey.html | 12 +- .../class-use/mxGraphMlKey.keyForValues.html | 12 +- .../class-use/mxGraphMlKey.keyTypeValues.html | 12 +- .../class-use/mxGraphMlKeyManager.html | 12 +- .../io/graphml/class-use/mxGraphMlNode.html | 12 +- .../io/graphml/class-use/mxGraphMlPort.html | 12 +- .../graphml/class-use/mxGraphMlShapeEdge.html | 12 +- .../graphml/class-use/mxGraphMlShapeNode.html | 12 +- .../io/graphml/class-use/mxGraphMlUtils.html | 12 +- .../io/graphml/mxGraphMlConstants.html | 12 +- .../com/mxgraph/io/graphml/mxGraphMlData.html | 12 +- .../com/mxgraph/io/graphml/mxGraphMlEdge.html | 12 +- .../mxgraph/io/graphml/mxGraphMlGraph.html | 12 +- .../com/mxgraph/io/graphml/mxGraphMlKey.html | 12 +- .../io/graphml/mxGraphMlKey.keyForValues.html | 12 +- .../graphml/mxGraphMlKey.keyTypeValues.html | 12 +- .../io/graphml/mxGraphMlKeyManager.html | 12 +- .../com/mxgraph/io/graphml/mxGraphMlNode.html | 12 +- .../com/mxgraph/io/graphml/mxGraphMlPort.html | 12 +- .../io/graphml/mxGraphMlShapeEdge.html | 12 +- .../io/graphml/mxGraphMlShapeNode.html | 12 +- .../mxgraph/io/graphml/mxGraphMlUtils.html | 12 +- .../com/mxgraph/io/graphml/package-frame.html | 6 +- .../mxgraph/io/graphml/package-summary.html | 12 +- .../com/mxgraph/io/graphml/package-tree.html | 12 +- .../com/mxgraph/io/graphml/package-use.html | 12 +- java/docs/com/mxgraph/io/mxCellCodec.html | 12 +- .../com/mxgraph/io/mxChildChangeCodec.html | 12 +- java/docs/com/mxgraph/io/mxCodec.html | 12 +- java/docs/com/mxgraph/io/mxCodecRegistry.html | 12 +- java/docs/com/mxgraph/io/mxGdCodec.html | 12 +- .../mxgraph/io/mxGdCodec.mxGDParseState.html | 12 +- .../com/mxgraph/io/mxGenericChangeCodec.html | 12 +- java/docs/com/mxgraph/io/mxGraphMlCodec.html | 12 +- java/docs/com/mxgraph/io/mxModelCodec.html | 12 +- java/docs/com/mxgraph/io/mxObjectCodec.html | 12 +- .../com/mxgraph/io/mxRootChangeCodec.html | 12 +- .../com/mxgraph/io/mxStylesheetCodec.html | 12 +- .../com/mxgraph/io/mxTerminalChangeCodec.html | 12 +- java/docs/com/mxgraph/io/package-frame.html | 6 +- java/docs/com/mxgraph/io/package-summary.html | 12 +- java/docs/com/mxgraph/io/package-tree.html | 12 +- java/docs/com/mxgraph/io/package-use.html | 12 +- .../layout/class-use/mxCircleLayout.html | 12 +- .../mxCompactTreeLayout.Polygon.html | 12 +- .../mxCompactTreeLayout.Polyline.html | 12 +- .../mxCompactTreeLayout.TreeNode.html | 12 +- ...xCompactTreeLayout.WeightedCellSorter.html | 12 +- .../layout/class-use/mxCompactTreeLayout.html | 12 +- .../layout/class-use/mxEdgeLabelLayout.html | 12 +- .../layout/class-use/mxFastOrganicLayout.html | 12 +- .../layout/class-use/mxGraphLayout.html | 12 +- .../layout/class-use/mxIGraphLayout.html | 12 +- .../mxOrganicLayout.CellWrapper.html | 12 +- .../layout/class-use/mxOrganicLayout.html | 12 +- .../class-use/mxParallelEdgeLayout.html | 12 +- .../layout/class-use/mxPartitionLayout.html | 12 +- .../layout/class-use/mxStackLayout.html | 12 +- .../class-use/mxHierarchicalLayout.html | 12 +- .../mxGraphAbstractHierarchyCell.html | 12 +- .../model/class-use/mxGraphHierarchyEdge.html | 12 +- .../mxGraphHierarchyModel.CellVisitor.html | 12 +- .../class-use/mxGraphHierarchyModel.html | 12 +- .../model/class-use/mxGraphHierarchyNode.html | 12 +- .../model/class-use/mxGraphHierarchyRank.html | 12 +- .../model/mxGraphAbstractHierarchyCell.html | 12 +- .../model/mxGraphHierarchyEdge.html | 12 +- .../mxGraphHierarchyModel.CellVisitor.html | 12 +- .../model/mxGraphHierarchyModel.html | 12 +- .../model/mxGraphHierarchyNode.html | 12 +- .../model/mxGraphHierarchyRank.html | 12 +- .../hierarchical/model/package-frame.html | 6 +- .../hierarchical/model/package-summary.html | 12 +- .../hierarchical/model/package-tree.html | 12 +- .../hierarchical/model/package-use.html | 12 +- .../hierarchical/mxHierarchicalLayout.html | 12 +- .../layout/hierarchical/package-frame.html | 6 +- .../layout/hierarchical/package-summary.html | 12 +- .../layout/hierarchical/package-tree.html | 12 +- .../layout/hierarchical/package-use.html | 12 +- ...CoordinateAssignment.AreaSpatialCache.html | 12 +- ...ordinateAssignment.WeightedCellSorter.html | 12 +- .../class-use/mxCoordinateAssignment.html | 12 +- .../class-use/mxHierarchicalLayoutStage.html | 12 +- ...ridCrossingReduction.MedianCellSorter.html | 12 +- .../mxMedianHybridCrossingReduction.html | 12 +- .../class-use/mxMinimumCycleRemover.html | 12 +- ...CoordinateAssignment.AreaSpatialCache.html | 12 +- ...ordinateAssignment.WeightedCellSorter.html | 12 +- .../stage/mxCoordinateAssignment.html | 12 +- .../stage/mxHierarchicalLayoutStage.html | 12 +- ...ridCrossingReduction.MedianCellSorter.html | 12 +- .../mxMedianHybridCrossingReduction.html | 12 +- .../stage/mxMinimumCycleRemover.html | 12 +- .../hierarchical/stage/package-frame.html | 6 +- .../hierarchical/stage/package-summary.html | 12 +- .../hierarchical/stage/package-tree.html | 12 +- .../hierarchical/stage/package-use.html | 12 +- .../com/mxgraph/layout/mxCircleLayout.html | 12 +- .../layout/mxCompactTreeLayout.Polygon.html | 12 +- .../layout/mxCompactTreeLayout.Polyline.html | 12 +- .../layout/mxCompactTreeLayout.TreeNode.html | 12 +- ...xCompactTreeLayout.WeightedCellSorter.html | 12 +- .../mxgraph/layout/mxCompactTreeLayout.html | 12 +- .../com/mxgraph/layout/mxEdgeLabelLayout.html | 12 +- .../mxgraph/layout/mxFastOrganicLayout.html | 12 +- .../com/mxgraph/layout/mxGraphLayout.html | 12 +- .../com/mxgraph/layout/mxIGraphLayout.html | 12 +- .../layout/mxOrganicLayout.CellWrapper.html | 12 +- .../com/mxgraph/layout/mxOrganicLayout.html | 12 +- .../mxgraph/layout/mxParallelEdgeLayout.html | 12 +- .../com/mxgraph/layout/mxPartitionLayout.html | 12 +- .../com/mxgraph/layout/mxStackLayout.html | 12 +- .../class-use/mxOrthogonalLayout.html | 12 +- .../model/class-use/mxOrthogonalModel.html | 12 +- .../model/class-use/mxPointPair.html | 12 +- .../model/class-use/mxPointSequence.html | 12 +- .../orthogonal/model/class-use/mxSegment.html | 12 +- .../orthogonal/model/mxOrthogonalModel.html | 12 +- .../layout/orthogonal/model/mxPointPair.html | 12 +- .../orthogonal/model/mxPointSequence.html | 12 +- .../layout/orthogonal/model/mxSegment.html | 12 +- .../orthogonal/model/package-frame.html | 6 +- .../orthogonal/model/package-summary.html | 12 +- .../layout/orthogonal/model/package-tree.html | 12 +- .../layout/orthogonal/model/package-use.html | 12 +- .../layout/orthogonal/mxOrthogonalLayout.html | 12 +- .../layout/orthogonal/package-frame.html | 6 +- .../layout/orthogonal/package-summary.html | 12 +- .../layout/orthogonal/package-tree.html | 12 +- .../layout/orthogonal/package-use.html | 12 +- .../com/mxgraph/layout/package-frame.html | 6 +- .../com/mxgraph/layout/package-summary.html | 12 +- .../docs/com/mxgraph/layout/package-tree.html | 12 +- java/docs/com/mxgraph/layout/package-use.html | 12 +- .../com/mxgraph/model/class-use/mxCell.html | 12 +- .../mxgraph/model/class-use/mxCellPath.html | 12 +- .../mxgraph/model/class-use/mxGeometry.html | 12 +- .../model/class-use/mxGraphModel.Filter.html | 12 +- .../mxgraph/model/class-use/mxGraphModel.html | 12 +- .../class-use/mxGraphModel.mxChildChange.html | 12 +- .../mxGraphModel.mxCollapseChange.html | 12 +- .../mxGraphModel.mxGeometryChange.html | 12 +- .../class-use/mxGraphModel.mxRootChange.html | 12 +- .../class-use/mxGraphModel.mxStyleChange.html | 12 +- .../mxGraphModel.mxTerminalChange.html | 12 +- .../class-use/mxGraphModel.mxValueChange.html | 12 +- .../mxGraphModel.mxVisibleChange.html | 12 +- .../com/mxgraph/model/class-use/mxICell.html | 12 +- .../model/class-use/mxIGraphModel.html | 12 +- ...xIGraphModel.mxAtomicGraphModelChange.html | 12 +- java/docs/com/mxgraph/model/mxCell.html | 12 +- java/docs/com/mxgraph/model/mxCellPath.html | 12 +- java/docs/com/mxgraph/model/mxGeometry.html | 12 +- .../mxgraph/model/mxGraphModel.Filter.html | 12 +- java/docs/com/mxgraph/model/mxGraphModel.html | 12 +- .../model/mxGraphModel.mxChildChange.html | 12 +- .../model/mxGraphModel.mxCollapseChange.html | 12 +- .../model/mxGraphModel.mxGeometryChange.html | 12 +- .../model/mxGraphModel.mxRootChange.html | 12 +- .../model/mxGraphModel.mxStyleChange.html | 12 +- .../model/mxGraphModel.mxTerminalChange.html | 12 +- .../model/mxGraphModel.mxValueChange.html | 12 +- .../model/mxGraphModel.mxVisibleChange.html | 12 +- java/docs/com/mxgraph/model/mxICell.html | 12 +- .../docs/com/mxgraph/model/mxIGraphModel.html | 12 +- ...xIGraphModel.mxAtomicGraphModelChange.html | 12 +- .../docs/com/mxgraph/model/package-frame.html | 6 +- .../com/mxgraph/model/package-summary.html | 12 +- java/docs/com/mxgraph/model/package-tree.html | 12 +- java/docs/com/mxgraph/model/package-use.html | 12 +- .../mxDomOutputParser.IElementHandler.html | 12 +- .../reader/class-use/mxDomOutputParser.html | 12 +- .../class-use/mxGraphViewImageReader.html | 12 +- .../reader/class-use/mxGraphViewReader.html | 12 +- .../mxSaxOutputHandler.IElementHandler.html | 12 +- .../reader/class-use/mxSaxOutputHandler.html | 12 +- .../mxDomOutputParser.IElementHandler.html | 12 +- .../com/mxgraph/reader/mxDomOutputParser.html | 12 +- .../reader/mxGraphViewImageReader.html | 12 +- .../com/mxgraph/reader/mxGraphViewReader.html | 12 +- .../mxSaxOutputHandler.IElementHandler.html | 12 +- .../mxgraph/reader/mxSaxOutputHandler.html | 12 +- .../com/mxgraph/reader/package-frame.html | 6 +- .../com/mxgraph/reader/package-summary.html | 12 +- .../docs/com/mxgraph/reader/package-tree.html | 12 +- java/docs/com/mxgraph/reader/package-use.html | 12 +- .../mxgraph/shape/class-use/mxActorShape.html | 12 +- .../mxgraph/shape/class-use/mxArrowShape.html | 12 +- .../mxgraph/shape/class-use/mxBasicShape.html | 12 +- .../mxgraph/shape/class-use/mxCloudShape.html | 12 +- .../shape/class-use/mxConnectorShape.html | 12 +- .../mxCurveLabelShape.LabelGlyphCache.html | 12 +- .../mxCurveLabelShape.LabelPosition.html | 12 +- .../shape/class-use/mxCurveLabelShape.html | 12 +- .../mxgraph/shape/class-use/mxCurveShape.html | 12 +- .../shape/class-use/mxCylinderShape.html | 12 +- .../shape/class-use/mxDefaultTextShape.html | 12 +- .../shape/class-use/mxDoubleEllipseShape.html | 12 +- .../class-use/mxDoubleRectangleShape.html | 12 +- .../shape/class-use/mxEllipseShape.html | 12 +- .../shape/class-use/mxHexagonShape.html | 12 +- .../shape/class-use/mxHtmlTextShape.html | 12 +- .../mxgraph/shape/class-use/mxIMarker.html | 12 +- .../com/mxgraph/shape/class-use/mxIShape.html | 12 +- .../mxgraph/shape/class-use/mxITextShape.html | 12 +- .../mxgraph/shape/class-use/mxImageShape.html | 12 +- .../mxgraph/shape/class-use/mxLabelShape.html | 12 +- .../mxgraph/shape/class-use/mxLineShape.html | 12 +- .../shape/class-use/mxMarkerRegistry.html | 12 +- .../shape/class-use/mxRectangleShape.html | 12 +- .../shape/class-use/mxRhombusShape.html | 12 +- .../mxgraph/shape/class-use/mxStencil.html | 12 +- .../shape/class-use/mxStencilRegistry.html | 12 +- .../shape/class-use/mxStencilShape.html | 12 +- .../class-use/mxStencilShape.svgShape.html | 12 +- .../shape/class-use/mxSwimlaneShape.html | 12 +- .../shape/class-use/mxTriangleShape.html | 12 +- java/docs/com/mxgraph/shape/mxActorShape.html | 12 +- java/docs/com/mxgraph/shape/mxArrowShape.html | 12 +- java/docs/com/mxgraph/shape/mxBasicShape.html | 12 +- java/docs/com/mxgraph/shape/mxCloudShape.html | 12 +- .../com/mxgraph/shape/mxConnectorShape.html | 12 +- .../mxCurveLabelShape.LabelGlyphCache.html | 12 +- .../mxCurveLabelShape.LabelPosition.html | 12 +- .../com/mxgraph/shape/mxCurveLabelShape.html | 12 +- java/docs/com/mxgraph/shape/mxCurveShape.html | 12 +- .../com/mxgraph/shape/mxCylinderShape.html | 12 +- .../com/mxgraph/shape/mxDefaultTextShape.html | 12 +- .../mxgraph/shape/mxDoubleEllipseShape.html | 12 +- .../mxgraph/shape/mxDoubleRectangleShape.html | 12 +- .../com/mxgraph/shape/mxEllipseShape.html | 12 +- .../com/mxgraph/shape/mxHexagonShape.html | 12 +- .../com/mxgraph/shape/mxHtmlTextShape.html | 12 +- java/docs/com/mxgraph/shape/mxIMarker.html | 12 +- java/docs/com/mxgraph/shape/mxIShape.html | 12 +- java/docs/com/mxgraph/shape/mxITextShape.html | 12 +- java/docs/com/mxgraph/shape/mxImageShape.html | 12 +- java/docs/com/mxgraph/shape/mxLabelShape.html | 12 +- java/docs/com/mxgraph/shape/mxLineShape.html | 12 +- .../com/mxgraph/shape/mxMarkerRegistry.html | 12 +- .../com/mxgraph/shape/mxRectangleShape.html | 12 +- .../com/mxgraph/shape/mxRhombusShape.html | 12 +- java/docs/com/mxgraph/shape/mxStencil.html | 12 +- .../com/mxgraph/shape/mxStencilRegistry.html | 12 +- .../com/mxgraph/shape/mxStencilShape.html | 12 +- .../shape/mxStencilShape.svgShape.html | 12 +- .../com/mxgraph/shape/mxSwimlaneShape.html | 12 +- .../com/mxgraph/shape/mxTriangleShape.html | 12 +- .../docs/com/mxgraph/shape/package-frame.html | 6 +- .../com/mxgraph/shape/package-summary.html | 12 +- java/docs/com/mxgraph/shape/package-tree.html | 12 +- java/docs/com/mxgraph/shape/package-use.html | 12 +- .../swing/class-use/mxGraphComponent.html | 12 +- .../mxGraphComponent.mxGraphControl.html | 12 +- .../mxGraphComponent.mxMouseRedirector.html | 12 +- .../mxGraphOutline.MouseTracker.html | 12 +- .../swing/class-use/mxGraphOutline.html | 12 +- .../handler/class-use/mxCellHandler.html | 12 +- .../swing/handler/class-use/mxCellMarker.html | 12 +- .../handler/class-use/mxCellTracker.html | 12 +- .../handler/class-use/mxConnectPreview.html | 12 +- .../class-use/mxConnectionHandler.html | 12 +- .../handler/class-use/mxEdgeHandler.html | 12 +- .../handler/class-use/mxElbowEdgeHandler.html | 12 +- .../handler/class-use/mxGraphHandler.html | 12 +- .../class-use/mxGraphTransferHandler.html | 12 +- .../handler/class-use/mxInsertHandler.html | 12 +- .../handler/class-use/mxKeyboardHandler.html | 12 +- .../handler/class-use/mxMovePreview.html | 12 +- .../handler/class-use/mxPanningHandler.html | 12 +- .../handler/class-use/mxRotationHandler.html | 12 +- .../swing/handler/class-use/mxRubberband.html | 12 +- .../class-use/mxSelectionCellsHandler.html | 12 +- .../handler/class-use/mxVertexHandler.html | 12 +- .../mxgraph/swing/handler/mxCellHandler.html | 12 +- .../mxgraph/swing/handler/mxCellMarker.html | 12 +- .../mxgraph/swing/handler/mxCellTracker.html | 12 +- .../swing/handler/mxConnectPreview.html | 12 +- .../swing/handler/mxConnectionHandler.html | 12 +- .../mxgraph/swing/handler/mxEdgeHandler.html | 12 +- .../swing/handler/mxElbowEdgeHandler.html | 12 +- .../mxgraph/swing/handler/mxGraphHandler.html | 12 +- .../swing/handler/mxGraphTransferHandler.html | 12 +- .../swing/handler/mxInsertHandler.html | 12 +- .../swing/handler/mxKeyboardHandler.html | 12 +- .../mxgraph/swing/handler/mxMovePreview.html | 12 +- .../swing/handler/mxPanningHandler.html | 12 +- .../swing/handler/mxRotationHandler.html | 12 +- .../mxgraph/swing/handler/mxRubberband.html | 12 +- .../handler/mxSelectionCellsHandler.html | 12 +- .../swing/handler/mxVertexHandler.html | 12 +- .../mxgraph/swing/handler/package-frame.html | 6 +- .../swing/handler/package-summary.html | 12 +- .../mxgraph/swing/handler/package-tree.html | 12 +- .../mxgraph/swing/handler/package-use.html | 12 +- .../com/mxgraph/swing/mxGraphComponent.html | 12 +- .../mxGraphComponent.mxGraphControl.html | 12 +- .../mxGraphComponent.mxMouseRedirector.html | 12 +- .../swing/mxGraphOutline.MouseTracker.html | 12 +- .../com/mxgraph/swing/mxGraphOutline.html | 12 +- .../docs/com/mxgraph/swing/package-frame.html | 6 +- .../com/mxgraph/swing/package-summary.html | 12 +- java/docs/com/mxgraph/swing/package-tree.html | 12 +- java/docs/com/mxgraph/swing/package-use.html | 12 +- .../swing/util/class-use/mxAnimation.html | 12 +- .../swing/util/class-use/mxCellOverlay.html | 12 +- .../mxGraphActions.DeleteAction.html | 12 +- .../class-use/mxGraphActions.DrillAction.html | 12 +- .../class-use/mxGraphActions.EditAction.html | 12 +- .../class-use/mxGraphActions.FoldAction.html | 12 +- .../class-use/mxGraphActions.GroupAction.html | 12 +- .../class-use/mxGraphActions.LayerAction.html | 12 +- ...mxGraphActions.RemoveFromParentAction.html | 12 +- .../mxGraphActions.SelectAction.html | 12 +- .../mxGraphActions.UngroupAction.html | 12 +- ...xGraphActions.UpdateGroupBoundsAction.html | 12 +- .../class-use/mxGraphActions.ZoomAction.html | 12 +- .../swing/util/class-use/mxGraphActions.html | 12 +- .../util/class-use/mxGraphTransferable.html | 12 +- .../swing/util/class-use/mxICellOverlay.html | 12 +- .../swing/util/class-use/mxMorphing.html | 12 +- .../swing/util/class-use/mxMouseAdapter.html | 12 +- .../util/class-use/mxSwingConstants.html | 12 +- .../com/mxgraph/swing/util/mxAnimation.html | 12 +- .../com/mxgraph/swing/util/mxCellOverlay.html | 12 +- .../util/mxGraphActions.DeleteAction.html | 12 +- .../util/mxGraphActions.DrillAction.html | 12 +- .../swing/util/mxGraphActions.EditAction.html | 12 +- .../swing/util/mxGraphActions.FoldAction.html | 12 +- .../util/mxGraphActions.GroupAction.html | 12 +- .../util/mxGraphActions.LayerAction.html | 12 +- ...mxGraphActions.RemoveFromParentAction.html | 12 +- .../util/mxGraphActions.SelectAction.html | 12 +- .../util/mxGraphActions.UngroupAction.html | 12 +- ...xGraphActions.UpdateGroupBoundsAction.html | 12 +- .../swing/util/mxGraphActions.ZoomAction.html | 12 +- .../mxgraph/swing/util/mxGraphActions.html | 12 +- .../swing/util/mxGraphTransferable.html | 12 +- .../mxgraph/swing/util/mxICellOverlay.html | 12 +- .../com/mxgraph/swing/util/mxMorphing.html | 12 +- .../mxgraph/swing/util/mxMouseAdapter.html | 12 +- .../mxgraph/swing/util/mxSwingConstants.html | 12 +- .../com/mxgraph/swing/util/package-frame.html | 6 +- .../mxgraph/swing/util/package-summary.html | 12 +- .../com/mxgraph/swing/util/package-tree.html | 12 +- .../com/mxgraph/swing/util/package-use.html | 12 +- .../swing/view/class-use/mxCellEditor.html | 12 +- .../view/class-use/mxCellStatePreview.html | 12 +- .../swing/view/class-use/mxICellEditor.html | 12 +- .../view/class-use/mxInteractiveCanvas.html | 12 +- .../com/mxgraph/swing/view/mxCellEditor.html | 12 +- .../swing/view/mxCellStatePreview.html | 12 +- .../com/mxgraph/swing/view/mxICellEditor.html | 12 +- .../swing/view/mxInteractiveCanvas.html | 12 +- .../com/mxgraph/swing/view/package-frame.html | 6 +- .../mxgraph/swing/view/package-summary.html | 12 +- .../com/mxgraph/swing/view/package-tree.html | 12 +- .../com/mxgraph/swing/view/package-use.html | 12 +- .../com/mxgraph/util/class-use/mxBase64.html | 12 +- .../mxCellRenderer.CanvasFactory.html | 12 +- .../util/class-use/mxCellRenderer.html | 12 +- .../mxgraph/util/class-use/mxConstants.html | 12 +- .../com/mxgraph/util/class-use/mxCurve.html | 12 +- .../mxgraph/util/class-use/mxDomUtils.html | 12 +- .../com/mxgraph/util/class-use/mxEvent.html | 12 +- .../mxgraph/util/class-use/mxEventObject.html | 12 +- .../mxgraph/util/class-use/mxEventSource.html | 12 +- .../mxEventSource.mxIEventListener.html | 12 +- .../mxgraph/util/class-use/mxHtmlColor.html | 12 +- .../com/mxgraph/util/class-use/mxImage.html | 12 +- .../mxgraph/util/class-use/mxImageBundle.html | 12 +- .../util/class-use/mxLightweightLabel.html | 12 +- .../com/mxgraph/util/class-use/mxLine.html | 12 +- .../com/mxgraph/util/class-use/mxPoint.html | 12 +- .../mxgraph/util/class-use/mxRectangle.html | 12 +- .../mxgraph/util/class-use/mxResources.html | 12 +- .../com/mxgraph/util/class-use/mxSpline.html | 12 +- .../mxgraph/util/class-use/mxSpline1D.html | 12 +- .../mxgraph/util/class-use/mxStyleUtils.html | 12 +- .../mxgraph/util/class-use/mxUndoManager.html | 12 +- .../util/class-use/mxUndoableEdit.html | 12 +- .../mxUndoableEdit.mxUndoableChange.html | 12 +- .../com/mxgraph/util/class-use/mxUtils.html | 12 +- .../mxgraph/util/class-use/mxXmlUtils.html | 12 +- java/docs/com/mxgraph/util/mxBase64.html | 12 +- .../util/mxCellRenderer.CanvasFactory.html | 12 +- .../docs/com/mxgraph/util/mxCellRenderer.html | 12 +- java/docs/com/mxgraph/util/mxConstants.html | 12 +- java/docs/com/mxgraph/util/mxCurve.html | 12 +- java/docs/com/mxgraph/util/mxDomUtils.html | 12 +- java/docs/com/mxgraph/util/mxEvent.html | 12 +- java/docs/com/mxgraph/util/mxEventObject.html | 12 +- java/docs/com/mxgraph/util/mxEventSource.html | 12 +- .../util/mxEventSource.mxIEventListener.html | 12 +- java/docs/com/mxgraph/util/mxHtmlColor.html | 12 +- java/docs/com/mxgraph/util/mxImage.html | 12 +- java/docs/com/mxgraph/util/mxImageBundle.html | 12 +- .../com/mxgraph/util/mxLightweightLabel.html | 12 +- java/docs/com/mxgraph/util/mxLine.html | 12 +- java/docs/com/mxgraph/util/mxPoint.html | 12 +- java/docs/com/mxgraph/util/mxRectangle.html | 12 +- java/docs/com/mxgraph/util/mxResources.html | 12 +- java/docs/com/mxgraph/util/mxSpline.html | 12 +- java/docs/com/mxgraph/util/mxSpline1D.html | 12 +- java/docs/com/mxgraph/util/mxStyleUtils.html | 12 +- java/docs/com/mxgraph/util/mxUndoManager.html | 12 +- .../docs/com/mxgraph/util/mxUndoableEdit.html | 12 +- .../util/mxUndoableEdit.mxUndoableChange.html | 12 +- java/docs/com/mxgraph/util/mxUtils.html | 12 +- java/docs/com/mxgraph/util/mxXmlUtils.html | 12 +- java/docs/com/mxgraph/util/package-frame.html | 6 +- .../com/mxgraph/util/package-summary.html | 12 +- java/docs/com/mxgraph/util/package-tree.html | 12 +- java/docs/com/mxgraph/util/package-use.html | 12 +- .../png/class-use/mxPngEncodeParam.Gray.html | 12 +- .../class-use/mxPngEncodeParam.Palette.html | 12 +- .../png/class-use/mxPngEncodeParam.RGB.html | 12 +- .../util/png/class-use/mxPngEncodeParam.html | 12 +- .../util/png/class-use/mxPngImageEncoder.html | 12 +- .../class-use/mxPngSuggestedPaletteEntry.html | 12 +- .../util/png/class-use/mxPngTextDecoder.html | 12 +- .../util/png/mxPngEncodeParam.Gray.html | 12 +- .../util/png/mxPngEncodeParam.Palette.html | 12 +- .../util/png/mxPngEncodeParam.RGB.html | 12 +- .../mxgraph/util/png/mxPngEncodeParam.html | 12 +- .../mxgraph/util/png/mxPngImageEncoder.html | 12 +- .../util/png/mxPngSuggestedPaletteEntry.html | 12 +- .../mxgraph/util/png/mxPngTextDecoder.html | 12 +- .../com/mxgraph/util/png/package-frame.html | 6 +- .../com/mxgraph/util/png/package-summary.html | 12 +- .../com/mxgraph/util/png/package-tree.html | 12 +- .../com/mxgraph/util/png/package-use.html | 12 +- .../com/mxgraph/util/svg/AWTPathProducer.html | 12 +- .../mxgraph/util/svg/AWTPolygonProducer.html | 12 +- .../mxgraph/util/svg/AWTPolylineProducer.html | 12 +- .../com/mxgraph/util/svg/AbstractParser.html | 12 +- .../com/mxgraph/util/svg/CSSConstants.html | 12 +- .../mxgraph/util/svg/DefaultErrorHandler.html | 12 +- .../com/mxgraph/util/svg/ErrorHandler.html | 12 +- .../mxgraph/util/svg/ExtendedGeneralPath.html | 12 +- .../util/svg/ExtendedPathIterator.html | 12 +- .../mxgraph/util/svg/NormalizingReader.html | 12 +- .../com/mxgraph/util/svg/NumberParser.html | 12 +- .../com/mxgraph/util/svg/ParseException.html | 12 +- java/docs/com/mxgraph/util/svg/Parser.html | 12 +- .../com/mxgraph/util/svg/PathHandler.html | 12 +- .../docs/com/mxgraph/util/svg/PathParser.html | 12 +- .../com/mxgraph/util/svg/PointsHandler.html | 12 +- .../com/mxgraph/util/svg/PointsParser.html | 12 +- .../com/mxgraph/util/svg/ShapeProducer.html | 12 +- .../util/svg/StringNormalizingReader.html | 12 +- .../util/svg/class-use/AWTPathProducer.html | 12 +- .../svg/class-use/AWTPolygonProducer.html | 12 +- .../svg/class-use/AWTPolylineProducer.html | 12 +- .../util/svg/class-use/AbstractParser.html | 12 +- .../util/svg/class-use/CSSConstants.html | 12 +- .../svg/class-use/DefaultErrorHandler.html | 12 +- .../util/svg/class-use/ErrorHandler.html | 12 +- .../svg/class-use/ExtendedGeneralPath.html | 12 +- .../svg/class-use/ExtendedPathIterator.html | 12 +- .../util/svg/class-use/NormalizingReader.html | 12 +- .../util/svg/class-use/NumberParser.html | 12 +- .../util/svg/class-use/ParseException.html | 12 +- .../mxgraph/util/svg/class-use/Parser.html | 12 +- .../util/svg/class-use/PathHandler.html | 12 +- .../util/svg/class-use/PathParser.html | 12 +- .../util/svg/class-use/PointsHandler.html | 12 +- .../util/svg/class-use/PointsParser.html | 12 +- .../util/svg/class-use/ShapeProducer.html | 12 +- .../class-use/StringNormalizingReader.html | 12 +- .../com/mxgraph/util/svg/package-frame.html | 6 +- .../com/mxgraph/util/svg/package-summary.html | 12 +- .../com/mxgraph/util/svg/package-tree.html | 12 +- .../com/mxgraph/util/svg/package-use.html | 12 +- .../mxgraph/view/class-use/mxCellState.html | 12 +- .../class-use/mxConnectionConstraint.html | 12 +- .../mxgraph/view/class-use/mxEdgeStyle.html | 12 +- .../mxEdgeStyle.mxEdgeStyleFunction.html | 12 +- .../com/mxgraph/view/class-use/mxGraph.html | 12 +- .../class-use/mxGraph.mxICellVisitor.html | 12 +- .../view/class-use/mxGraphSelectionModel.html | 12 +- ...GraphSelectionModel.mxSelectionChange.html | 12 +- .../mxgraph/view/class-use/mxGraphView.html | 12 +- .../mxGraphView.mxCurrentRootChange.html | 12 +- .../view/class-use/mxLayoutManager.html | 12 +- .../view/class-use/mxMultiplicity.html | 12 +- .../mxgraph/view/class-use/mxPerimeter.html | 12 +- .../mxPerimeter.mxPerimeterFunction.html | 12 +- .../view/class-use/mxSpaceManager.html | 12 +- .../view/class-use/mxStyleRegistry.html | 12 +- .../mxgraph/view/class-use/mxStylesheet.html | 12 +- .../view/class-use/mxSwimlaneManager.html | 12 +- .../view/class-use/mxTemporaryCellStates.html | 12 +- java/docs/com/mxgraph/view/mxCellState.html | 12 +- .../mxgraph/view/mxConnectionConstraint.html | 12 +- java/docs/com/mxgraph/view/mxEdgeStyle.html | 12 +- .../view/mxEdgeStyle.mxEdgeStyleFunction.html | 12 +- java/docs/com/mxgraph/view/mxGraph.html | 14 +- .../mxgraph/view/mxGraph.mxICellVisitor.html | 12 +- .../mxgraph/view/mxGraphSelectionModel.html | 12 +- ...GraphSelectionModel.mxSelectionChange.html | 12 +- java/docs/com/mxgraph/view/mxGraphView.html | 12 +- .../view/mxGraphView.mxCurrentRootChange.html | 12 +- .../com/mxgraph/view/mxLayoutManager.html | 12 +- .../docs/com/mxgraph/view/mxMultiplicity.html | 12 +- java/docs/com/mxgraph/view/mxPerimeter.html | 12 +- .../view/mxPerimeter.mxPerimeterFunction.html | 12 +- .../docs/com/mxgraph/view/mxSpaceManager.html | 12 +- .../com/mxgraph/view/mxStyleRegistry.html | 12 +- java/docs/com/mxgraph/view/mxStylesheet.html | 12 +- .../com/mxgraph/view/mxSwimlaneManager.html | 12 +- .../mxgraph/view/mxTemporaryCellStates.html | 12 +- java/docs/com/mxgraph/view/package-frame.html | 6 +- .../com/mxgraph/view/package-summary.html | 12 +- java/docs/com/mxgraph/view/package-tree.html | 12 +- java/docs/com/mxgraph/view/package-use.html | 12 +- java/docs/constant-values.html | 14 +- java/docs/deprecated-list.html | 12 +- java/docs/help-doc.html | 12 +- java/docs/index-all.html | 12 +- java/docs/index.html | 4 +- java/docs/overview-frame.html | 8 +- java/docs/overview-summary.html | 14 +- java/docs/overview-tree.html | 12 +- java/docs/serialized-form.html | 12 +- .../com/mxgraph/examples/Xml2Svg.java | 61 +++ .../examples/web/resources/export.html | 3 + java/lib/mxgraph-all.jar | Bin 626541 -> 626571 bytes java/lib/mxgraph-core.jar | Bin 479214 -> 479248 bytes java/lib/mxgraph-swing.jar | Bin 147898 -> 147895 bytes .../mxgraph/util/png/mxPngTextDecoder.java | 6 +- java/src/com/mxgraph/view/mxGraph.java | 4 +- .../examples/editors/diagrams/swimlanes.xml | 4 +- .../editors/diagrams/travel-booking.xml | 46 +- .../examples/editors/diagrams/withdrawal.xml | 14 +- .../examples/grapheditor/www/js/Actions.js | 57 +-- .../examples/grapheditor/www/js/Dialogs.js | 63 ++- .../examples/grapheditor/www/js/Editor.js | 2 +- .../examples/grapheditor/www/js/EditorUi.js | 57 ++- .../examples/grapheditor/www/js/Format.js | 449 +++++++++++++----- .../examples/grapheditor/www/js/Graph.js | 211 ++++++-- .../examples/grapheditor/www/js/Menus.js | 6 +- .../examples/grapheditor/www/js/Shapes.js | 14 +- .../examples/grapheditor/www/js/Sidebar.js | 6 +- .../examples/grapheditor/www/js/Toolbar.js | 28 +- javascript/examples/grapheditor/www/open.html | 5 +- .../grapheditor/www/resources/grapheditor.txt | 1 + .../www/resources/grapheditor_de.txt | 1 + .../grapheditor/www/styles/grapheditor.css | 18 +- javascript/mxClient.js | 196 +++++--- javascript/mxClient.min.js | 91 ++-- javascript/src/css/explorer.css | 2 +- javascript/src/js/handler/mxVertexHandler.js | 2 +- .../hierarchical/mxHierarchicalLayout.js | 17 +- .../stage/mxCoordinateAssignment.js | 31 +- javascript/src/js/mxClient.js | 6 +- javascript/src/js/shape/mxText.js | 1 + javascript/src/js/util/mxPopupMenu.js | 17 +- javascript/src/js/util/mxSvgCanvas2D.js | 81 +++- javascript/src/js/util/mxUtils.js | 10 + javascript/src/js/view/mxCellEditor.js | 4 +- javascript/src/js/view/mxGraph.js | 19 +- javascript/src/js/view/mxPrintPreview.js | 8 +- php/src/mxServer.php | 6 +- 1046 files changed, 5385 insertions(+), 4817 deletions(-) create mode 100644 java/examples/com/mxgraph/examples/Xml2Svg.java diff --git a/ChangeLog b/ChangeLog index dba391768..ae5fa8559 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +09-FEB-2015: 3.1.2.2 + +- mxText.updateBoundingBox sets unrotatedBoundingBox [JavaScript] +- Adds additional check for DOMParser functionality [JavaScript] +- Rounds coordinates in mxCellEditor.getEditorBounds [JavaScript] +- Fixes handling of HTML entities for SVG export in quirks, IE11 [JavaScript] +- Adds mxSvgCanvas2D.convertHtml for HTML to XHTML conversion [JavaScript] +- Adds Xml2Svg.java example [Java] +- Fixes mxGraph.extendParent for relative children [JavaScript] +- Fixes mxGraph.getBoundingBoxFromGeometry for relative children if parent is not in cells argument [JavaScript] +- Fixes possible NPE in mxGraph.getBoundingBoxFromGeometry [JavaScript] +- Fixes incorrect header when parsing PNG+XML files [Java] +- Adds mxUtils.toDegree [JavaScript] +- Adds pageScale option for print dialog in grapheditor +- mxPrintPreview.autoOrigin no longer overrides x0, y0 in open [JavaScript] +- Fixes mxDisabled class in explorer.css for IE8 standards [JavaScript] +- Fixes unspecified error in mxPopupMenu.addItem for quirks/IE8 [JavaScript] +- Adds active argument in mxPopupMenu.addItem [JavaScript] + 05-JAN-2015: 3.1.2.1 - Fixes flipH/V in mxSvgCanvas2D.image [JavaScript] diff --git a/docs/js-api/files/editor/mxDefaultKeyHandler-js.html b/docs/js-api/files/editor/mxDefaultKeyHandler-js.html index 48ecff6e6..9b46bec65 100644 --- a/docs/js-api/files/editor/mxDefaultKeyHandler-js.html +++ b/docs/js-api/files/editor/mxDefaultKeyHandler-js.html @@ -36,7 +36,7 @@ keyHandler.bindAction(46, 'delete');

Codec< - diff --git a/docs/js-api/files/editor/mxDefaultPopupMenu-js.html b/docs/js-api/files/editor/mxDefaultPopupMenu-js.html index abfcca990..db57dd02f 100644 --- a/docs/js-api/files/editor/mxDefaultPopupMenu-js.html +++ b/docs/js-api/files/editor/mxDefaultPopupMenu-js.html @@ -53,7 +53,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/editor/mxDefaultToolbar-js.html b/docs/js-api/files/editor/mxDefaultToolbar-js.html index 0bad8ec0e..959fb5c40 100644 --- a/docs/js-api/files/editor/mxDefaultToolbar-js.html +++ b/docs/js-api/files/editor/mxDefaultToolbar-js.html @@ -69,7 +69,7 @@ toolbar.addActionOption(combo, 'Paste', 'paste');
- diff --git a/docs/js-api/files/editor/mxEditor-js.html b/docs/js-api/files/editor/mxEditor-js.html index d38b58c4b..fa580a054 100644 --- a/docs/js-api/files/editor/mxEditor-js.html +++ b/docs/js-api/files/editor/mxEditor-js.html @@ -372,7 +372,7 @@ mxEditor.prototype.showTasks = function() - diff --git a/docs/js-api/files/handler/mxCellHighlight-js.html b/docs/js-api/files/handler/mxCellHighlight-js.html index 1530bb601..7d69ae6d2 100644 --- a/docs/js-api/files/handler/mxCellHighlight-js.html +++ b/docs/js-api/files/handler/mxCellHighlight-js.html @@ -52,7 +52,7 @@ highlight.highlight(graph.view.getState(cell))); - diff --git a/docs/js-api/files/handler/mxCellMarker-js.html b/docs/js-api/files/handler/mxCellMarker-js.html index 80253dd45..f1d878075 100644 --- a/docs/js-api/files/handler/mxCellMarker-js.html +++ b/docs/js-api/files/handler/mxCellMarker-js.html @@ -101,7 +101,7 @@ graph.addMouseListener({ - diff --git a/docs/js-api/files/handler/mxCellTracker-js.html b/docs/js-api/files/handler/mxCellTracker-js.html index 5205cb08c..e81553a22 100644 --- a/docs/js-api/files/handler/mxCellTracker-js.html +++ b/docs/js-api/files/handler/mxCellTracker-js.html @@ -72,7 +72,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxConnectionHandler-js.html b/docs/js-api/files/handler/mxConnectionHandler-js.html index fac638112..1e015d3ee 100644 --- a/docs/js-api/files/handler/mxConnectionHandler-js.html +++ b/docs/js-api/files/handler/mxConnectionHandler-js.html @@ -193,7 +193,7 @@ mxConnectionHandler.prototype.insertEdge = function(parent, id, value, source, t - diff --git a/docs/js-api/files/handler/mxConstraintHandler-js.html b/docs/js-api/files/handler/mxConstraintHandler-js.html index 693dcb022..1566a47fd 100644 --- a/docs/js-api/files/handler/mxConstraintHandler-js.html +++ b/docs/js-api/files/handler/mxConstraintHandler-js.html @@ -59,7 +59,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxEdgeHandler-js.html b/docs/js-api/files/handler/mxEdgeHandler-js.html index 8b242f706..d731a882d 100644 --- a/docs/js-api/files/handler/mxEdgeHandler-js.html +++ b/docs/js-api/files/handler/mxEdgeHandler-js.html @@ -186,7 +186,7 @@ mxEdgeHandler.prototype.removeEnabled = true;

Note: This ex

- diff --git a/docs/js-api/files/handler/mxEdgeSegmentHandler-js.html b/docs/js-api/files/handler/mxEdgeSegmentHandler-js.html index a144d18ef..616059735 100644 --- a/docs/js-api/files/handler/mxEdgeSegmentHandler-js.html +++ b/docs/js-api/files/handler/mxEdgeSegmentHandler-js.html @@ -37,7 +37,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxElbowEdgeHandler-js.html b/docs/js-api/files/handler/mxElbowEdgeHandler-js.html index ff86b5de6..77293b7b5 100644 --- a/docs/js-api/files/handler/mxElbowEdgeHandler-js.html +++ b/docs/js-api/files/handler/mxElbowEdgeHandler-js.html @@ -41,7 +41,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxGraphHandler-js.html b/docs/js-api/files/handler/mxGraphHandler-js.html index 58c23f4c7..6044b1496 100644 --- a/docs/js-api/files/handler/mxGraphHandler-js.html +++ b/docs/js-api/files/handler/mxGraphHandler-js.html @@ -11,7 +11,7 @@ if (browserType) {document.write("
");if (browserV -

mxGraphHandler

Graph event handler that handles selection.  Individual cells are handled separately using mxVertexHandler or one of the edge handlers.  These handlers are created using mxGraph.createHandler in mxGraphSelectionModel.cellAdded.

To avoid the container to scroll a moved cell into view, set <scrollAfterMove> to false.

Summary
mxGraphHandlerGraph event handler that handles selection.
Functions
mxGraphHandlerConstructs an event handler that creates handles for the selection cells.
Variables
graphReference to the enclosing mxGraph.
maxCellsDefines the maximum number of cells to paint subhandles for.
enabledSpecifies if events are handled.
highlightEnabledSpecifies if drop targets under the mouse should be enabled.
cloneEnabledSpecifies if cloning by control-drag is enabled.
moveEnabledSpecifies if moving is enabled.
guidesEnabledSpecifies if other cells should be used for snapping the right, center or left side of the current selection.
guideHolds the mxGuide instance that is used for alignment.
currentDxStores the x-coordinate of the current mouse move.
currentDyStores the y-coordinate of the current mouse move.
updateCursorSpecifies if a move cursor should be shown if the mouse is over a movable cell.
selectEnabledSpecifies if selecting is enabled.
removeCellsFromParentSpecifies if cells may be moved out of their parents.
connectOnDropSpecifies if drop events are interpreted as new connections if no other drop action is defined.
scrollOnMoveSpecifies if the view should be scrolled so that a moved cell is visible.
minimumSizeSpecifies the minimum number of pixels for the width and height of a selection border.
previewColorSpecifies the color of the preview shape.
htmlPreviewSpecifies if the graph container should be used for preview.
shapeReference to the mxShape that represents the preview.
scaleGridSpecifies if the grid should be scaled.
rotationEnabledSpecifies if the bounding box should allow for rotation.
Functions
isEnabledReturns enabled.
setEnabledSets enabled.
isCloneEnabledReturns cloneEnabled.
setCloneEnabledSets cloneEnabled.
isMoveEnabledReturns moveEnabled.
setMoveEnabledSets moveEnabled.
isSelectEnabledReturns selectEnabled.
setSelectEnabledSets selectEnabled.
isRemoveCellsFromParentReturns removeCellsFromParent.
setRemoveCellsFromParentSets removeCellsFromParent.
getInitialCellForEventHook to return initial cell for the given event.
isDelayedSelectionHook to return true for delayed selections.
mouseDownHandles the event by selecing the given cell and creating a handle for it.
getGuideStatesCreates an array of cell states which should be used as guides.
getCellsReturns the cells to be modified by this handler.
getPreviewBoundsReturns the mxRectangle used as the preview bounds for moving the given cells.
getBoundingBoxReturns the mxRectangle that represents the bounding box for the given cells.
createPreviewShapeCreates the shape used to draw the preview for the given bounds.
startStarts the handling of the mouse gesture.
useGuidesForEventReturns true if the guides should be used for the given mxMouseEvent.
snapSnaps the given vector to the grid and returns the given mxPoint instance.
getDeltaReturns an mxPoint that represents the vector for moving the cells for the given mxMouseEvent.
updateHintHook for subclassers do show details while the handler is active.
removeHintHooks for subclassers to hide details when the handler gets inactive.
roundLengthHook for rounding the unscaled vector.
mouseMoveHandles the event by highlighting possible drop targets and updating the preview.
updatePreviewShapeUpdates the bounds of the preview shape.
setHighlightColorSets the color of the rectangle used to highlight drop targets.
mouseUpHandles the event by applying the changes to the selection cells.
selectDelayedImplements the delayed selection for the given mouse event.
resetResets the state of this handler.
shouldRemoveCellsFromParentReturns true if the given cells should be removed from the parent for the specified mousereleased event.
moveCellsMoves the given cells by the specified amount.
destroyShapesDestroy the preview and highlight shapes.
destroyDestroys the handler and all its resources and DOM nodes.
+

mxGraphHandler

Graph event handler that handles selection.  Individual cells are handled separately using mxVertexHandler or one of the edge handlers.  These handlers are created using mxGraph.createHandler in mxGraphSelectionModel.cellAdded.

To avoid the container to scroll a moved cell into view, set <scrollAfterMove> to false.

Summary
mxGraphHandlerGraph event handler that handles selection.
Functions
mxGraphHandlerConstructs an event handler that creates handles for the selection cells.
Variables
graphReference to the enclosing mxGraph.
maxCellsDefines the maximum number of cells to paint subhandles for.
enabledSpecifies if events are handled.
highlightEnabledSpecifies if drop targets under the mouse should be enabled.
cloneEnabledSpecifies if cloning by control-drag is enabled.
moveEnabledSpecifies if moving is enabled.
guidesEnabledSpecifies if other cells should be used for snapping the right, center or left side of the current selection.
guideHolds the mxGuide instance that is used for alignment.
currentDxStores the x-coordinate of the current mouse move.
currentDyStores the y-coordinate of the current mouse move.
updateCursorSpecifies if a move cursor should be shown if the mouse is over a movable cell.
selectEnabledSpecifies if selecting is enabled.
removeCellsFromParentSpecifies if cells may be moved out of their parents.
connectOnDropSpecifies if drop events are interpreted as new connections if no other drop action is defined.
scrollOnMoveSpecifies if the view should be scrolled so that a moved cell is visible.
minimumSizeSpecifies the minimum number of pixels for the width and height of a selection border.
previewColorSpecifies the color of the preview shape.
htmlPreviewSpecifies if the graph container should be used for preview.
shapeReference to the mxShape that represents the preview.
scaleGridSpecifies if the grid should be scaled.
rotationEnabledSpecifies if the bounding box should allow for rotation.
Functions
isEnabledReturns enabled.
setEnabledSets enabled.
isCloneEnabledReturns cloneEnabled.
setCloneEnabledSets cloneEnabled.
isMoveEnabledReturns moveEnabled.
setMoveEnabledSets moveEnabled.
isSelectEnabledReturns selectEnabled.
setSelectEnabledSets selectEnabled.
isRemoveCellsFromParentReturns removeCellsFromParent.
setRemoveCellsFromParentSets removeCellsFromParent.
getInitialCellForEventHook to return initial cell for the given event.
isDelayedSelectionHook to return true for delayed selections.
mouseDownHandles the event by selecing the given cell and creating a handle for it.
getGuideStatesCreates an array of cell states which should be used as guides.
getCellsReturns the cells to be modified by this handler.
getPreviewBoundsReturns the mxRectangle used as the preview bounds for moving the given cells.
getBoundingBoxReturns the mxRectangle that represents the bounding box for the given cells.
createPreviewShapeCreates the shape used to draw the preview for the given bounds.
startStarts the handling of the mouse gesture.
useGuidesForEventReturns true if the guides should be used for the given mxMouseEvent.
snapSnaps the given vector to the grid and returns the given mxPoint instance.
getDeltaReturns an mxPoint that represents the vector for moving the cells for the given mxMouseEvent.
updateHintHook for subclassers do show details while the handler is active.
removeHintHooks for subclassers to hide details when the handler gets inactive.
roundLengthHook for rounding the unscaled vector.
mouseMoveHandles the event by highlighting possible drop targets and updating the preview.
updatePreviewShapeUpdates the bounds of the preview shape.
setHighlightColorSets the color of the rectangle used to highlight drop targets.
mouseUpHandles the event by applying the changes to the selection cells.
selectDelayedImplements the delayed selection for the given mouse event.
resetResets the state of this handler.
shouldRemoveCellsFromParentReturns true if the given cells should be removed from the parent for the specified mousereleased event.
moveCellsMoves the given cells by the specified amount.
destroyShapesDestroy the preview and highlight shapes.
destroyDestroys the handler and all its resources and DOM nodes.

Functions

@@ -139,7 +139,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxHandle-js.html b/docs/js-api/files/handler/mxHandle-js.html index 6efaa7324..c2866cc23 100644 --- a/docs/js-api/files/handler/mxHandle-js.html +++ b/docs/js-api/files/handler/mxHandle-js.html @@ -71,7 +71,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxKeyHandler-js.html b/docs/js-api/files/handler/mxKeyHandler-js.html index d2551a739..f19f0df95 100644 --- a/docs/js-api/files/handler/mxKeyHandler-js.html +++ b/docs/js-api/files/handler/mxKeyHandler-js.html @@ -80,7 +80,7 @@ keyHandler.bindKey(46, function(evt) - diff --git a/docs/js-api/files/handler/mxPanningHandler-js.html b/docs/js-api/files/handler/mxPanningHandler-js.html index 2fe371a50..5f87cec5f 100644 --- a/docs/js-api/files/handler/mxPanningHandler-js.html +++ b/docs/js-api/files/handler/mxPanningHandler-js.html @@ -106,7 +106,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxPopupMenuHandler-js.html b/docs/js-api/files/handler/mxPopupMenuHandler-js.html index 772835ded..672faeb27 100644 --- a/docs/js-api/files/handler/mxPopupMenuHandler-js.html +++ b/docs/js-api/files/handler/mxPopupMenuHandler-js.html @@ -55,7 +55,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxRubberband-js.html b/docs/js-api/files/handler/mxRubberband-js.html index 305f20558..a90b1d242 100644 --- a/docs/js-api/files/handler/mxRubberband-js.html +++ b/docs/js-api/files/handler/mxRubberband-js.html @@ -63,7 +63,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxSelectionCellsHandler-js.html b/docs/js-api/files/handler/mxSelectionCellsHandler-js.html index de8fa75c3..bd6241af4 100644 --- a/docs/js-api/files/handler/mxSelectionCellsHandler-js.html +++ b/docs/js-api/files/handler/mxSelectionCellsHandler-js.html @@ -53,7 +53,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxTooltipHandler-js.html b/docs/js-api/files/handler/mxTooltipHandler-js.html index 741838b6c..020a68212 100644 --- a/docs/js-api/files/handler/mxTooltipHandler-js.html +++ b/docs/js-api/files/handler/mxTooltipHandler-js.html @@ -69,7 +69,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/handler/mxVertexHandler-js.html b/docs/js-api/files/handler/mxVertexHandler-js.html index 38fa45ad7..fa591cb90 100644 --- a/docs/js-api/files/handler/mxVertexHandler-js.html +++ b/docs/js-api/files/handler/mxVertexHandler-js.html @@ -174,7 +174,7 @@ mxVertexHandler.prototype.union = function(bounds, dx, dy, index, gridEnabled, s - diff --git a/docs/js-api/files/index-txt.html b/docs/js-api/files/index-txt.html index e460493d5..7886aaedf 100644 --- a/docs/js-api/files/index-txt.html +++ b/docs/js-api/files/index-txt.html @@ -47,7 +47,7 @@ mxCodecRegistry.register(codec);

Functions< - diff --git a/docs/js-api/files/io/mxCellCodec-js.html b/docs/js-api/files/io/mxCellCodec-js.html index 5ecc9180c..4fc443ef3 100644 --- a/docs/js-api/files/io/mxCellCodec-js.html +++ b/docs/js-api/files/io/mxCellCodec-js.html @@ -37,7 +37,7 @@ mxCodecRegistry.addAlias('CustomCell', 'mxCell'); - diff --git a/docs/js-api/files/io/mxChildChangeCodec-js.html b/docs/js-api/files/io/mxChildChangeCodec-js.html index 1f15670bf..0fd4a0dd5 100644 --- a/docs/js-api/files/io/mxChildChangeCodec-js.html +++ b/docs/js-api/files/io/mxChildChangeCodec-js.html @@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxCodec-js.html b/docs/js-api/files/io/mxCodec-js.html index 5d73d0c9a..a86651438 100644 --- a/docs/js-api/files/io/mxCodec-js.html +++ b/docs/js-api/files/io/mxCodec-js.html @@ -95,7 +95,7 @@ codec.reference = function(obj) - diff --git a/docs/js-api/files/io/mxCodecRegistry-js.html b/docs/js-api/files/io/mxCodecRegistry-js.html index 1c3ab95ee..d30c1d3f6 100644 --- a/docs/js-api/files/io/mxCodecRegistry-js.html +++ b/docs/js-api/files/io/mxCodecRegistry-js.html @@ -34,7 +34,7 @@ codec.decode = function(dec, node, into) { ... }

3.  R

- diff --git a/docs/js-api/files/io/mxDefaultKeyHandlerCodec-js.html b/docs/js-api/files/io/mxDefaultKeyHandlerCodec-js.html index c364716a1..3c1dc29cd 100644 --- a/docs/js-api/files/io/mxDefaultKeyHandlerCodec-js.html +++ b/docs/js-api/files/io/mxDefaultKeyHandlerCodec-js.html @@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxDefaultPopupMenuCodec-js.html b/docs/js-api/files/io/mxDefaultPopupMenuCodec-js.html index f62c0278e..9c393fa05 100644 --- a/docs/js-api/files/io/mxDefaultPopupMenuCodec-js.html +++ b/docs/js-api/files/io/mxDefaultPopupMenuCodec-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxDefaultToolbarCodec-js.html b/docs/js-api/files/io/mxDefaultToolbarCodec-js.html index c5ad97ec9..561f966c6 100644 --- a/docs/js-api/files/io/mxDefaultToolbarCodec-js.html +++ b/docs/js-api/files/io/mxDefaultToolbarCodec-js.html @@ -50,7 +50,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxEditorCodec-js.html b/docs/js-api/files/io/mxEditorCodec-js.html index 162f95d33..702f3745d 100644 --- a/docs/js-api/files/io/mxEditorCodec-js.html +++ b/docs/js-api/files/io/mxEditorCodec-js.html @@ -36,7 +36,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxGenericChangeCodec-js.html b/docs/js-api/files/io/mxGenericChangeCodec-js.html index 96b57afbe..4fe0bbebc 100644 --- a/docs/js-api/files/io/mxGenericChangeCodec-js.html +++ b/docs/js-api/files/io/mxGenericChangeCodec-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxGraphCodec-js.html b/docs/js-api/files/io/mxGraphCodec-js.html index f7a001646..86e893359 100644 --- a/docs/js-api/files/io/mxGraphCodec-js.html +++ b/docs/js-api/files/io/mxGraphCodec-js.html @@ -19,7 +19,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxGraphViewCodec-js.html b/docs/js-api/files/io/mxGraphViewCodec-js.html index a9800417a..948df5a16 100644 --- a/docs/js-api/files/io/mxGraphViewCodec-js.html +++ b/docs/js-api/files/io/mxGraphViewCodec-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxModelCodec-js.html b/docs/js-api/files/io/mxModelCodec-js.html index 65614d0cf..4a23800f4 100644 --- a/docs/js-api/files/io/mxModelCodec-js.html +++ b/docs/js-api/files/io/mxModelCodec-js.html @@ -27,7 +27,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxObjectCodec-js.html b/docs/js-api/files/io/mxObjectCodec-js.html index b286df7b3..c7f8520ee 100644 --- a/docs/js-api/files/io/mxObjectCodec-js.html +++ b/docs/js-api/files/io/mxObjectCodec-js.html @@ -118,7 +118,7 @@ mapping['variableName'] = 'attribute-name';
- diff --git a/docs/js-api/files/io/mxRootChangeCodec-js.html b/docs/js-api/files/io/mxRootChangeCodec-js.html index a13c1a59b..a9dc3c900 100644 --- a/docs/js-api/files/io/mxRootChangeCodec-js.html +++ b/docs/js-api/files/io/mxRootChangeCodec-js.html @@ -27,7 +27,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxStylesheetCodec-js.html b/docs/js-api/files/io/mxStylesheetCodec-js.html index 01ae41272..df5fbe85b 100644 --- a/docs/js-api/files/io/mxStylesheetCodec-js.html +++ b/docs/js-api/files/io/mxStylesheetCodec-js.html @@ -38,7 +38,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/io/mxTerminalChangeCodec-js.html b/docs/js-api/files/io/mxTerminalChangeCodec-js.html index 1628b2f69..ef7af0081 100644 --- a/docs/js-api/files/io/mxTerminalChangeCodec-js.html +++ b/docs/js-api/files/io/mxTerminalChangeCodec-js.html @@ -23,7 +23,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/model/mxGraphAbstractHierarchyCell-js.html b/docs/js-api/files/layout/hierarchical/model/mxGraphAbstractHierarchyCell-js.html index daa1e8ef2..78ee3feb2 100644 --- a/docs/js-api/files/layout/hierarchical/model/mxGraphAbstractHierarchyCell-js.html +++ b/docs/js-api/files/layout/hierarchical/model/mxGraphAbstractHierarchyCell-js.html @@ -63,7 +63,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyEdge-js.html b/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyEdge-js.html index 363bf949b..919312deb 100644 --- a/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyEdge-js.html +++ b/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyEdge-js.html @@ -51,7 +51,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyModel-js.html b/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyModel-js.html index 4dc0b614b..24b8500c8 100644 --- a/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyModel-js.html +++ b/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyModel-js.html @@ -57,7 +57,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyNode-js.html b/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyNode-js.html index d14a1d9ec..f247ad95c 100644 --- a/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyNode-js.html +++ b/docs/js-api/files/layout/hierarchical/model/mxGraphHierarchyNode-js.html @@ -53,7 +53,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/model/mxSwimlaneModel-js.html b/docs/js-api/files/layout/hierarchical/model/mxSwimlaneModel-js.html index 846e7d50c..0d5eec970 100644 --- a/docs/js-api/files/layout/hierarchical/model/mxSwimlaneModel-js.html +++ b/docs/js-api/files/layout/hierarchical/model/mxSwimlaneModel-js.html @@ -59,7 +59,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/mxHierarchicalLayout-js.html b/docs/js-api/files/layout/hierarchical/mxHierarchicalLayout-js.html index dc7efa283..488b8313e 100644 --- a/docs/js-api/files/layout/hierarchical/mxHierarchicalLayout-js.html +++ b/docs/js-api/files/layout/hierarchical/mxHierarchicalLayout-js.html @@ -11,23 +11,23 @@ if (browserType) {document.write("
");if (browserV -

mxHierarchicalLayout

A hierarchical layout algorithm.

Summary
mxHierarchicalLayoutA hierarchical layout algorithm.
Functions
mxHierarchicalLayoutConstructs a new hierarchical layout algorithm.
Variables
rootsHolds the array of mxCell that this layout contains.
resizeParentSpecifies if the parent should be resized after the layout so that it contains all the child cells.
maintainParentLocationSpecifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout.
moveParentSpecifies if the parent should be moved if resizeParent is enabled.
parentBorderThe border to be added around the children if the parent is to be resized using resizeParent.
intraCellSpacingThe spacing buffer added between cells on the same layer.
interRankCellSpacingThe spacing buffer added between cell on adjacent layers.
interHierarchySpacingThe spacing buffer between unconnected hierarchies.
parallelEdgeSpacingThe distance between each parallel edge on each ranks for long edges
orientationThe position of the root node(s) relative to the laid out graph in.
fineTuningWhether or not to perform local optimisations and iterate multiple times through the algorithm.
tightenToSourceWhether or not to tighten the assigned ranks of vertices up towards the source cells.
disableEdgeStyleSpecifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
traverseAncestorsWhether or not to drill into child cells and layout in reverse group order.
modelThe internal mxGraphHierarchyModel formed of the layout.
edgesSetA cache of edges whose source terminal is the key
edgesSetA cache of edges whose source terminal is the key
edgesSetA cache of edges whose source terminal is the key
Functions
getModelReturns the internal mxGraphHierarchyModel for this layout algorithm.
executeExecutes the layout for the children of the specified parent.
findRootsReturns all visible children in the given parent which do not have incoming edges.
getEdgesReturns the connected edges for the given cell.
getVisibleTerminalHelper function to return visible terminal for edge allowing for ports
runThe API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
filterDescendantsCreates an array of descendant cells
isPortReturns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
getEdgesBetweenReturns the edges between the given source and target.
cycleStageExecutes the cycle stage using mxMinimumCycleRemover.
layeringStageImplements first stage of a Sugiyama layout.
crossingStageExecutes the crossing stage using mxMedianHybridCrossingReduction.
placementStageExecutes the placement stage using mxCoordinateAssignment.
+

mxHierarchicalLayout

A hierarchical layout algorithm.

Summary
mxHierarchicalLayoutA hierarchical layout algorithm.
Functions
mxHierarchicalLayoutConstructs a new hierarchical layout algorithm.
Variables
rootsHolds the array of mxCell that this layout contains.
resizeParentSpecifies if the parent should be resized after the layout so that it contains all the child cells.
maintainParentLocationSpecifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout.
moveParentSpecifies if the parent should be moved if resizeParent is enabled.
parentBorderThe border to be added around the children if the parent is to be resized using resizeParent.
intraCellSpacingThe spacing buffer added between cells on the same layer.
interRankCellSpacingThe spacing buffer added between cell on adjacent layers.
interHierarchySpacingThe spacing buffer between unconnected hierarchies.
parallelEdgeSpacingThe distance between each parallel edge on each ranks for long edges
orientationThe position of the root node(s) relative to the laid out graph in.
fineTuningWhether or not to perform local optimisations and iterate multiple times through the algorithm.
tightenToSourceWhether or not to tighten the assigned ranks of vertices up towards the source cells.
disableEdgeStyleSpecifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
traverseAncestorsWhether or not to drill into child cells and layout in reverse group order.
modelThe internal mxGraphHierarchyModel formed of the layout.
edgesSetA cache of edges whose source terminal is the key
edgesSetA cache of edges whose source terminal is the key
edgesSetA cache of edges whose source terminal is the key
edgeStyleThe style to apply between cell layers to edge segments
Functions
getModelReturns the internal mxGraphHierarchyModel for this layout algorithm.
executeExecutes the layout for the children of the specified parent.
findRootsReturns all visible children in the given parent which do not have incoming edges.
getEdgesReturns the connected edges for the given cell.
getVisibleTerminalHelper function to return visible terminal for edge allowing for ports
runThe API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
filterDescendantsCreates an array of descendant cells
isPortReturns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
getEdgesBetweenReturns the edges between the given source and target.
cycleStageExecutes the cycle stage using mxMinimumCycleRemover.
layeringStageImplements first stage of a Sugiyama layout.
crossingStageExecutes the crossing stage using mxMedianHybridCrossingReduction.
placementStageExecutes the placement stage using mxCoordinateAssignment.

Functions

-

mxHierarchicalLayout

function mxHierarchicalLayout(graph,
orientation,
deterministic)

Constructs a new hierarchical layout algorithm.

Arguments

graphReference to the enclosing mxGraph.
orientationOptional constant that defines the orientation of this layout.
deterministicOptional boolean that specifies if this layout should be deterministic.  Default is true.
+

mxHierarchicalLayout

function mxHierarchicalLayout(graph,
orientation,
deterministic)

Constructs a new hierarchical layout algorithm.

Arguments

graphReference to the enclosing mxGraph.
orientationOptional constant that defines the orientation of this layout.
deterministicOptional boolean that specifies if this layout should be deterministic.  Default is true.

Variables

-

roots

mxHierarchicalLayout.prototype.roots

Holds the array of mxCell that this layout contains.

+

roots

mxHierarchicalLayout.prototype.roots

Holds the array of mxCell that this layout contains.

-

resizeParent

mxHierarchicalLayout.prototype.resizeParent

Specifies if the parent should be resized after the layout so that it contains all the child cells.  Default is false.  See also parentBorder.

+

resizeParent

mxHierarchicalLayout.prototype.resizeParent

Specifies if the parent should be resized after the layout so that it contains all the child cells.  Default is false.  See also parentBorder.

maintainParentLocation

mxCompactTreeLayout.prototype.maintainParentLocation

Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout.  Default is false for backwards compatibility.

-

moveParent

mxHierarchicalLayout.prototype.moveParent

Specifies if the parent should be moved if resizeParent is enabled.  Default is false.

+

moveParent

mxHierarchicalLayout.prototype.moveParent

Specifies if the parent should be moved if resizeParent is enabled.  Default is false.

-

parentBorder

mxHierarchicalLayout.prototype.parentBorder

The border to be added around the children if the parent is to be resized using resizeParent.  Default is 0.

+

parentBorder

mxHierarchicalLayout.prototype.parentBorder

The border to be added around the children if the parent is to be resized using resizeParent.  Default is 0.

intraCellSpacing

mxHierarchicalLayout.prototype.intraCellSpacing

The spacing buffer added between cells on the same layer.  Default is 30.

@@ -37,7 +37,7 @@ if (browserType) {document.write("
");if (browserV

parallelEdgeSpacing

mxHierarchicalLayout.prototype.parallelEdgeSpacing

The distance between each parallel edge on each ranks for long edges

-

orientation

mxHierarchicalLayout.prototype.orientation

The position of the root node(s) relative to the laid out graph in.  Default is mxConstants.DIRECTION_NORTH.

+

orientation

mxHierarchicalLayout.prototype.orientation

The position of the root node(s) relative to the laid out graph in.  Default is mxConstants.DIRECTION_NORTH.

fineTuning

mxHierarchicalLayout.prototype.fineTuning

Whether or not to perform local optimisations and iterate multiple times through the algorithm.  Default is true.

@@ -47,7 +47,7 @@ if (browserType) {document.write("
");if (browserV

traverseAncestors

mxHierarchicalLayout.prototype.traverseAncestors

Whether or not to drill into child cells and layout in reverse group order.  This also cause the layout to navigate edges whose terminal vertices * have different parents but are in the same ancestry chain

-

model

mxHierarchicalLayout.prototype.model

The internal mxGraphHierarchyModel formed of the layout.

+

model

mxHierarchicalLayout.prototype.model

The internal mxGraphHierarchyModel formed of the layout.

edgesSet

A cache of edges whose source terminal is the key

@@ -55,23 +55,25 @@ if (browserType) {document.write("
");if (browserV

edgesSet

A cache of edges whose source terminal is the key

+

edgeStyle

mxHierarchicalLayout.prototype.edgeStyle

The style to apply between cell layers to edge segments

+

Functions

-

getModel

mxHierarchicalLayout.prototype.getModel = function()

Returns the internal mxGraphHierarchyModel for this layout algorithm.

+

getModel

mxHierarchicalLayout.prototype.getModel = function()

Returns the internal mxGraphHierarchyModel for this layout algorithm.

-

execute

mxHierarchicalLayout.prototype.execute = function(parent,
roots)

Executes the layout for the children of the specified parent.

Parameters

parentParent mxCell that contains the children to be laid out.
rootsOptional starting roots of the layout.
+

execute

mxHierarchicalLayout.prototype.execute = function(parent,
roots)

Executes the layout for the children of the specified parent.

Parameters

parentParent mxCell that contains the children to be laid out.
rootsOptional starting roots of the layout.
-

findRoots

mxHierarchicalLayout.prototype.findRoots = function(parent,
vertices)

Returns all visible children in the given parent which do not have incoming edges.  If the result is empty then the children with the maximum difference between incoming and outgoing edges are returned.  This takes into account edges that are being promoted to the given root due to invisible children or collapsed cells.

Parameters

parentmxCell whose children should be checked.
verticesarray of vertices to limit search to
+

findRoots

mxHierarchicalLayout.prototype.findRoots = function(parent,
vertices)

Returns all visible children in the given parent which do not have incoming edges.  If the result is empty then the children with the maximum difference between incoming and outgoing edges are returned.  This takes into account edges that are being promoted to the given root due to invisible children or collapsed cells.

Parameters

parentmxCell whose children should be checked.
verticesarray of vertices to limit search to
-

getEdges

mxHierarchicalLayout.prototype.getEdges = function(cell)

Returns the connected edges for the given cell.

Parameters

cellmxCell whose edges should be returned.
+

getEdges

mxHierarchicalLayout.prototype.getEdges = function(cell)

Returns the connected edges for the given cell.

Parameters

cellmxCell whose edges should be returned.
-

getVisibleTerminal

mxHierarchicalLayout.prototype.getVisibleTerminal = function(edge,
source)

Helper function to return visible terminal for edge allowing for ports

Parameters

edgemxCell whose edges should be returned.
sourceBoolean that specifies whether the source or target terminal is to be returned
+

getVisibleTerminal

mxHierarchicalLayout.prototype.getVisibleTerminal = function(edge,
source)

Helper function to return visible terminal for edge allowing for ports

Parameters

edgemxCell whose edges should be returned.
sourceBoolean that specifies whether the source or target terminal is to be returned

run

mxHierarchicalLayout.prototype.run = function(parent)

The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.  It runs each stage of the layout that has been created.

filterDescendants

mxHierarchicalLayout.prototype.filterDescendants = function(cell,
result)

Creates an array of descendant cells

-

isPort

mxHierarchicalLayout.prototype.isPort = function(cell)

Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal

Parameters

cellmxCell that represents the port.
+

isPort

mxHierarchicalLayout.prototype.isPort = function(cell)

Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal

Parameters

cellmxCell that represents the port.

getEdgesBetween

mxHierarchicalLayout.prototype.getEdgesBetween = function(source,
target,
directed)

Returns the edges between the given source and target.  This takes into account collapsed and invisible cells and ports.

Parameters

source - target - directed -

@@ -89,7 +91,7 @@ if (browserType) {document.write("
");if (browserV - @@ -97,7 +99,7 @@ HideAllBut([6, 7], 13);// -->
-
function mxHierarchicalLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
mxHierarchicalLayout.prototype.roots
Holds the array of mxCell that this layout contains.
Cells are the elements of the graph model.
mxHierarchicalLayout.prototype.resizeParent
Specifies if the parent should be resized after the layout so that it contains all the child cells.
mxCompactTreeLayout.prototype.maintainParentLocation
Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout.
mxHierarchicalLayout.prototype.moveParent
Specifies if the parent should be moved if resizeParent is enabled.
mxHierarchicalLayout.prototype.parentBorder
The border to be added around the children if the parent is to be resized using resizeParent.
mxHierarchicalLayout.prototype.intraCellSpacing
The spacing buffer added between cells on the same layer.
mxHierarchicalLayout.prototype.interRankCellSpacing
The spacing buffer added between cell on adjacent layers.
mxHierarchicalLayout.prototype.interHierarchySpacing
The spacing buffer between unconnected hierarchies.
mxHierarchicalLayout.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges
mxHierarchicalLayout.prototype.orientation
The position of the root node(s) relative to the laid out graph in.
mxHierarchicalLayout.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
mxHierarchicalLayout.prototype.tightenToSource
Whether or not to tighten the assigned ranks of vertices up towards the source cells.
mxHierarchicalLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
mxHierarchicalLayout.prototype.traverseAncestors
Whether or not to drill into child cells and layout in reverse group order.
mxHierarchicalLayout.prototype.model
The internal mxGraphHierarchyModel formed of the layout.
Internal model of a hierarchical graph.
mxHierarchicalLayout.prototype.getModel = function()
Returns the internal mxGraphHierarchyModel for this layout algorithm.
mxHierarchicalLayout.prototype.execute = function(parent,
roots)
Executes the layout for the children of the specified parent.
mxHierarchicalLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxHierarchicalLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxHierarchicalLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxHierarchicalLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
mxHierarchicalLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
mxHierarchicalLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxHierarchicalLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxHierarchicalLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
mxHierarchicalLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxHierarchicalLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxHierarchicalLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
Extends mxEventSource to implement a graph component for the browser.
Constant for direction north.
+
function mxHierarchicalLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
mxHierarchicalLayout.prototype.roots
Holds the array of mxCell that this layout contains.
Cells are the elements of the graph model.
mxHierarchicalLayout.prototype.resizeParent
Specifies if the parent should be resized after the layout so that it contains all the child cells.
mxCompactTreeLayout.prototype.maintainParentLocation
Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout.
mxHierarchicalLayout.prototype.moveParent
Specifies if the parent should be moved if resizeParent is enabled.
mxHierarchicalLayout.prototype.parentBorder
The border to be added around the children if the parent is to be resized using resizeParent.
mxHierarchicalLayout.prototype.intraCellSpacing
The spacing buffer added between cells on the same layer.
mxHierarchicalLayout.prototype.interRankCellSpacing
The spacing buffer added between cell on adjacent layers.
mxHierarchicalLayout.prototype.interHierarchySpacing
The spacing buffer between unconnected hierarchies.
mxHierarchicalLayout.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges
mxHierarchicalLayout.prototype.orientation
The position of the root node(s) relative to the laid out graph in.
mxHierarchicalLayout.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
mxHierarchicalLayout.prototype.tightenToSource
Whether or not to tighten the assigned ranks of vertices up towards the source cells.
mxHierarchicalLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
mxHierarchicalLayout.prototype.traverseAncestors
Whether or not to drill into child cells and layout in reverse group order.
mxHierarchicalLayout.prototype.model
The internal mxGraphHierarchyModel formed of the layout.
Internal model of a hierarchical graph.
mxHierarchicalLayout.prototype.edgeStyle
The style to apply between cell layers to edge segments
mxHierarchicalLayout.prototype.getModel = function()
Returns the internal mxGraphHierarchyModel for this layout algorithm.
mxHierarchicalLayout.prototype.execute = function(parent,
roots)
Executes the layout for the children of the specified parent.
mxHierarchicalLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxHierarchicalLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxHierarchicalLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxHierarchicalLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
mxHierarchicalLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
mxHierarchicalLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxHierarchicalLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxHierarchicalLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
mxHierarchicalLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxHierarchicalLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxHierarchicalLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
Extends mxEventSource to implement a graph component for the browser.
Constant for direction north.
diff --git a/docs/js-api/files/layout/hierarchical/mxSwimlaneLayout-js.html b/docs/js-api/files/layout/hierarchical/mxSwimlaneLayout-js.html index 807cf3792..5cb6f3ec1 100644 --- a/docs/js-api/files/layout/hierarchical/mxSwimlaneLayout-js.html +++ b/docs/js-api/files/layout/hierarchical/mxSwimlaneLayout-js.html @@ -91,7 +91,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/stage/mxCoordinateAssignment-js.html b/docs/js-api/files/layout/hierarchical/stage/mxCoordinateAssignment-js.html index 5b4622489..2c1c3f138 100644 --- a/docs/js-api/files/layout/hierarchical/stage/mxCoordinateAssignment-js.html +++ b/docs/js-api/files/layout/hierarchical/stage/mxCoordinateAssignment-js.html @@ -11,7 +11,7 @@ if (browserType) {document.write("
");if (browserV -

mxCoordinateAssignment

Sets the horizontal locations of node and edge dummy nodes on each layer.  Uses median down and up weighings as well as heuristics to straighten edges as far as possible.

Summary
mxCoordinateAssignmentSets the horizontal locations of node and edge dummy nodes on each layer.
Functions
mxCoordinateAssignmentCreates a coordinate assignment.
Variables
layoutReference to the enclosing mxHierarchicalLayout.
intraCellSpacingThe minimum buffer between cells on the same rank.
interRankCellSpacingThe minimum distance between cells on adjacent ranks.
parallelEdgeSpacingThe distance between each parallel edge on each ranks for long edges.
maxIterationsThe number of heuristic iterations to run.
prefHozEdgeSepThe preferred horizontal distance between edges exiting a vertex
prefVertEdgeOffThe preferred vertical offset between edges exiting a vertex
minEdgeJettyThe minimum distance for an edge jetty from a vertex
channelBufferThe size of the vertical buffer in the center of inter-rank channels where edge control points should not be placed
jettyPositionsMap of internal edges and (x,y) pair of positions of the start and end jetty for that edge where it connects to the source and target vertices.
orientationThe position of the root ( start ) node(s) relative to the rest of the laid out graph.
initialXThe minimum x position node placement starts at
limitXThe maximum x value this positioning lays up to
currentXDeltaThe sum of x-displacements for the current iteration
widestRankThe rank that has the widest x position
rankTopYInternal cache of top-most values of Y for each rank
rankBottomYInternal cache of bottom-most value of Y for each rank
widestRankValueThe X-coordinate of the edge of the widest rank
rankWidthsThe width of all the ranks
rankYThe Y-coordinate of all the ranks
fineTuningWhether or not to perform local optimisations and iterate multiple times through the algorithm.
edgeStyleThe style to apply between cell layers to edge segments
nextLayerConnectedCacheA store of connections to the layer above for speed
previousLayerConnectedCacheA store of connections to the layer below for speed
groupPaddingPadding added to resized parents
Functions
executeA basic horizontal coordinate assignment algorithm
minNodePerforms one median positioning sweep in both directions
medianPosPerforms one median positioning sweep in one direction
rankMedianPositionPerforms median minimisation over one rank.
calculatedWeightedValueCalculates the priority the specified cell has based on the type of its cell and the cells it is connected to on the next layer
medianXValueCalculates the median position of the connected cell on the specified rank
initialCoordsSets up the layout in an initial positioning.
rankCoordinatesSets up the layout in an initial positioning.
calculateWidestRankCalculates the width rank in the hierarchy.
minPathStraightens out chains of virtual nodes where possibleacade to those stored after this layout processing step has completed.
repositionValidDetermines whether or not a node may be moved to the specified x position on the specified rank
setCellLocationsSets the cell locations in the facade to those stored after this layout processing step has completed.
localEdgeProcessingSeparates the x position of edges as they connect to vertices
setEdgePositionFixes the control points
setVertexLocationFixes the position of the specified vertex.
processReversedEdgeHook to add additional processing
WeightedCellSorterA utility class used to track cells whilst sorting occurs on the weighted sum of their connected edges.
Functions
WeightedCellSorterConstructs a new weighted cell sorted for the given cell and weight.
Variables
weightedValueThe weighted value of the cell stored.
nudgeWhether or not to flip equal weight values.
visitedWhether or not this cell has been visited in the current assignment.
rankIndexThe index this cell is in the model rank.
cellThe cell whose median value is being calculated.
Functions
compareCompares two WeightedCellSorters.
+

mxCoordinateAssignment

Sets the horizontal locations of node and edge dummy nodes on each layer.  Uses median down and up weighings as well as heuristics to straighten edges as far as possible.

Summary
mxCoordinateAssignmentSets the horizontal locations of node and edge dummy nodes on each layer.
Functions
mxCoordinateAssignmentCreates a coordinate assignment.
Variables
layoutReference to the enclosing mxHierarchicalLayout.
intraCellSpacingThe minimum buffer between cells on the same rank.
interRankCellSpacingThe minimum distance between cells on adjacent ranks.
parallelEdgeSpacingThe distance between each parallel edge on each ranks for long edges.
maxIterationsThe number of heuristic iterations to run.
prefHozEdgeSepThe preferred horizontal distance between edges exiting a vertex
prefVertEdgeOffThe preferred vertical offset between edges exiting a vertex
minEdgeJettyThe minimum distance for an edge jetty from a vertex
channelBufferThe size of the vertical buffer in the center of inter-rank channels where edge control points should not be placed
jettyPositionsMap of internal edges and (x,y) pair of positions of the start and end jetty for that edge where it connects to the source and target vertices.
orientationThe position of the root ( start ) node(s) relative to the rest of the laid out graph.
initialXThe minimum x position node placement starts at
limitXThe maximum x value this positioning lays up to
currentXDeltaThe sum of x-displacements for the current iteration
widestRankThe rank that has the widest x position
rankTopYInternal cache of top-most values of Y for each rank
rankBottomYInternal cache of bottom-most value of Y for each rank
widestRankValueThe X-coordinate of the edge of the widest rank
rankWidthsThe width of all the ranks
rankYThe Y-coordinate of all the ranks
fineTuningWhether or not to perform local optimisations and iterate multiple times through the algorithm.
nextLayerConnectedCacheA store of connections to the layer above for speed
previousLayerConnectedCacheA store of connections to the layer below for speed
groupPaddingPadding added to resized parents
Functions
executeA basic horizontal coordinate assignment algorithm
minNodePerforms one median positioning sweep in both directions
medianPosPerforms one median positioning sweep in one direction
rankMedianPositionPerforms median minimisation over one rank.
calculatedWeightedValueCalculates the priority the specified cell has based on the type of its cell and the cells it is connected to on the next layer
medianXValueCalculates the median position of the connected cell on the specified rank
initialCoordsSets up the layout in an initial positioning.
rankCoordinatesSets up the layout in an initial positioning.
calculateWidestRankCalculates the width rank in the hierarchy.
minPathStraightens out chains of virtual nodes where possibleacade to those stored after this layout processing step has completed.
repositionValidDetermines whether or not a node may be moved to the specified x position on the specified rank
setCellLocationsSets the cell locations in the facade to those stored after this layout processing step has completed.
localEdgeProcessingSeparates the x position of edges as they connect to vertices
setEdgePositionFixes the control points
setVertexLocationFixes the position of the specified vertex.
processReversedEdgeHook to add additional processing
WeightedCellSorterA utility class used to track cells whilst sorting occurs on the weighted sum of their connected edges.
Functions
WeightedCellSorterConstructs a new weighted cell sorted for the given cell and weight.
Variables
weightedValueThe weighted value of the cell stored.
nudgeWhether or not to flip equal weight values.
visitedWhether or not this cell has been visited in the current assignment.
rankIndexThe index this cell is in the model rank.
cellThe cell whose median value is being calculated.
Functions
compareCompares two WeightedCellSorters.

Functions

@@ -19,7 +19,7 @@ if (browserType) {document.write("
");if (browserV

Variables

-

layout

mxCoordinateAssignment.prototype.layout

Reference to the enclosing mxHierarchicalLayout.

+

layout

mxCoordinateAssignment.prototype.layout

Reference to the enclosing mxHierarchicalLayout.

intraCellSpacing

mxCoordinateAssignment.prototype.intraCellSpacing

The minimum buffer between cells on the same rank.  Default is 30.

@@ -39,7 +39,7 @@ if (browserType) {document.write("
");if (browserV

jettyPositions

mxCoordinateAssignment.prototype.jettyPositions

Map of internal edges and (x,y) pair of positions of the start and end jetty for that edge where it connects to the source and target vertices.  Note this should technically be a WeakHashMap, but since JS does not have an equivalent, housekeeping must be performed before using. i.e. check all edges are still in the model and clear the values.  Note that the y co-ord is the offset of the jetty, not the absolute point

-

orientation

mxCoordinateAssignment.prototype.orientation

The position of the root ( start ) node(s) relative to the rest of the laid out graph.  Default is mxConstants.DIRECTION_NORTH.

+

orientation

mxCoordinateAssignment.prototype.orientation

The position of the root ( start ) node(s) relative to the rest of the laid out graph.  Default is mxConstants.DIRECTION_NORTH.

initialX

mxCoordinateAssignment.prototype.initialX

The minimum x position node placement starts at

@@ -61,8 +61,6 @@ if (browserType) {document.write("
");if (browserV

fineTuning

mxCoordinateAssignment.prototype.fineTuning

Whether or not to perform local optimisations and iterate multiple times through the algorithm.  Default is true.

-

edgeStyle

mxCoordinateAssignment.prototype.edgeStyle

The style to apply between cell layers to edge segments

-

nextLayerConnectedCache

mxCoordinateAssignment.prototype.nextLayerConnectedCache

A store of connections to the layer above for speed

previousLayerConnectedCache

mxCoordinateAssignment.prototype.previousLayerConnectedCache

A store of connections to the layer below for speed

@@ -103,7 +101,7 @@ if (browserType) {document.write("
");if (browserV

processReversedEdge

mxCoordinateAssignment.prototype.processReversedEdge = function(graph,
model)

Hook to add additional processing

Parameters

edgethe hierarchical model edge
realEdgethe real edge in the graph
-

WeightedCellSorter

A utility class used to track cells whilst sorting occurs on the weighted sum of their connected edges.  Does not violate (x.compareTo(y)==0) == (x.equals(y))

Summary
Functions
WeightedCellSorterConstructs a new weighted cell sorted for the given cell and weight.
Variables
weightedValueThe weighted value of the cell stored.
nudgeWhether or not to flip equal weight values.
visitedWhether or not this cell has been visited in the current assignment.
rankIndexThe index this cell is in the model rank.
cellThe cell whose median value is being calculated.
Functions
compareCompares two WeightedCellSorters.
+

WeightedCellSorter

A utility class used to track cells whilst sorting occurs on the weighted sum of their connected edges.  Does not violate (x.compareTo(y)==0) == (x.equals(y))

Summary
Functions
WeightedCellSorterConstructs a new weighted cell sorted for the given cell and weight.
Variables
weightedValueThe weighted value of the cell stored.
nudgeWhether or not to flip equal weight values.
visitedWhether or not this cell has been visited in the current assignment.
rankIndexThe index this cell is in the model rank.
cellThe cell whose median value is being calculated.
Functions
compareCompares two WeightedCellSorters.

Functions

@@ -131,7 +129,7 @@ if (browserType) {document.write("
");if (browserV - @@ -139,7 +137,7 @@ HideAllBut([5, 6, 7], 13);// -->
-
function mxCoordinateAssignment(layout,
intraCellSpacing,
interRankCellSpacing,
orientation,
initialX,
parallelEdgeSpacing)
Creates a coordinate assignment.
mxCoordinateAssignment.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
A hierarchical layout algorithm.
mxCoordinateAssignment.prototype.intraCellSpacing
The minimum buffer between cells on the same rank.
mxCoordinateAssignment.prototype.interRankCellSpacing
The minimum distance between cells on adjacent ranks.
mxCoordinateAssignment.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges.
mxCoordinateAssignment.prototype.maxIterations
The number of heuristic iterations to run.
mxCoordinateAssignment.prototype.prefHozEdgeSep
The preferred horizontal distance between edges exiting a vertex
mxCoordinateAssignment.prototype.prefVertEdgeOff
The preferred vertical offset between edges exiting a vertex
mxCoordinateAssignment.prototype.minEdgeJetty
The minimum distance for an edge jetty from a vertex
mxCoordinateAssignment.prototype.channelBuffer
The size of the vertical buffer in the center of inter-rank channels where edge control points should not be placed
mxCoordinateAssignment.prototype.jettyPositions
Map of internal edges and (x,y) pair of positions of the start and end jetty for that edge where it connects to the source and target vertices.
mxCoordinateAssignment.prototype.orientation
The position of the root ( start ) node(s) relative to the rest of the laid out graph.
mxCoordinateAssignment.prototype.initialX
The minimum x position node placement starts at
mxCoordinateAssignment.prototype.limitX
The maximum x value this positioning lays up to
mxCoordinateAssignment.prototype.currentXDelta
The sum of x-displacements for the current iteration
mxCoordinateAssignment.prototype.widestRank
The rank that has the widest x position
mxCoordinateAssignment.prototype.rankTopY
Internal cache of top-most values of Y for each rank
mxCoordinateAssignment.prototype.rankBottomY
Internal cache of bottom-most value of Y for each rank
mxCoordinateAssignment.prototype.widestRankValue
The X-coordinate of the edge of the widest rank
mxCoordinateAssignment.prototype.rankWidths
The width of all the ranks
mxCoordinateAssignment.prototype.rankY
The Y-coordinate of all the ranks
mxCoordinateAssignment.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
mxCoordinateAssignment.prototype.edgeStyle
The style to apply between cell layers to edge segments
mxCoordinateAssignment.prototype.nextLayerConnectedCache
A store of connections to the layer above for speed
mxCoordinateAssignment.prototype.previousLayerConnectedCache
A store of connections to the layer below for speed
mxCoordinateAssignment.prototype.groupPadding
Padding added to resized parents
mxCoordinateAssignment.prototype.execute = function(parent)
A basic horizontal coordinate assignment algorithm
mxCoordinateAssignment.prototype.minNode = function(model)
Performs one median positioning sweep in both directions
mxCoordinateAssignment.prototype.medianPos = function(i,
model)
Performs one median positioning sweep in one direction
mxCoordinateAssignment.prototype.rankMedianPosition = function(rankValue,
model,
nextRankValue)
Performs median minimisation over one rank.
mxCoordinateAssignment.prototype.calculatedWeightedValue = function(
   currentCell,
   collection
)
Calculates the priority the specified cell has based on the type of its cell and the cells it is connected to on the next layer
mxCoordinateAssignment.prototype.medianXValue = function(connectedCells,
rankValue)
Calculates the median position of the connected cell on the specified rank
mxCoordinateAssignment.prototype.initialCoords = function(facade,
model)
Sets up the layout in an initial positioning.
mxCoordinateAssignment.prototype.rankCoordinates = function(rankValue,
graph,
model)
Sets up the layout in an initial positioning.
mxCoordinateAssignment.prototype.calculateWidestRank = function(graph,
model)
Calculates the width rank in the hierarchy.
mxCoordinateAssignment.prototype.minPath = function(graph,
model)
Straightens out chains of virtual nodes where possibleacade to those stored after this layout processing step has completed.
mxCoordinateAssignment.prototype.repositionValid = function(model,
cell,
rank,
position)
Determines whether or not a node may be moved to the specified x position on the specified rank
mxCoordinateAssignment.prototype.setCellLocations = function(graph,
model)
Sets the cell locations in the facade to those stored after this layout processing step has completed.
mxCoordinateAssignment.prototype.localEdgeProcessing = function(model)
Separates the x position of edges as they connect to vertices
mxCoordinateAssignment.prototype.setEdgePosition = function(cell)
Fixes the control points
mxCoordinateAssignment.prototype.setVertexLocation = function(cell)
Fixes the position of the specified vertex.
mxCoordinateAssignment.prototype.processReversedEdge = function(graph,
model)
Hook to add additional processing
function WeightedCellSorter(cell,
weightedValue)
Constructs a new weighted cell sorted for the given cell and weight.
WeightedCellSorter.prototype.weightedValue
The weighted value of the cell stored.
WeightedCellSorter.prototype.nudge
Whether or not to flip equal weight values.
WeightedCellSorter.prototype.visited
Whether or not this cell has been visited in the current assignment.
WeightedCellSorter.prototype.rankIndex
The index this cell is in the model rank.
WeightedCellSorter.prototype.cell
The cell whose median value is being calculated.
WeightedCellSorter.prototype.compare = function(a,
b)
Compares two WeightedCellSorters.
Constant for direction north.
+
function mxCoordinateAssignment(layout,
intraCellSpacing,
interRankCellSpacing,
orientation,
initialX,
parallelEdgeSpacing)
Creates a coordinate assignment.
mxCoordinateAssignment.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
A hierarchical layout algorithm.
mxCoordinateAssignment.prototype.intraCellSpacing
The minimum buffer between cells on the same rank.
mxCoordinateAssignment.prototype.interRankCellSpacing
The minimum distance between cells on adjacent ranks.
mxCoordinateAssignment.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges.
mxCoordinateAssignment.prototype.maxIterations
The number of heuristic iterations to run.
mxCoordinateAssignment.prototype.prefHozEdgeSep
The preferred horizontal distance between edges exiting a vertex
mxCoordinateAssignment.prototype.prefVertEdgeOff
The preferred vertical offset between edges exiting a vertex
mxCoordinateAssignment.prototype.minEdgeJetty
The minimum distance for an edge jetty from a vertex
mxCoordinateAssignment.prototype.channelBuffer
The size of the vertical buffer in the center of inter-rank channels where edge control points should not be placed
mxCoordinateAssignment.prototype.jettyPositions
Map of internal edges and (x,y) pair of positions of the start and end jetty for that edge where it connects to the source and target vertices.
mxCoordinateAssignment.prototype.orientation
The position of the root ( start ) node(s) relative to the rest of the laid out graph.
mxCoordinateAssignment.prototype.initialX
The minimum x position node placement starts at
mxCoordinateAssignment.prototype.limitX
The maximum x value this positioning lays up to
mxCoordinateAssignment.prototype.currentXDelta
The sum of x-displacements for the current iteration
mxCoordinateAssignment.prototype.widestRank
The rank that has the widest x position
mxCoordinateAssignment.prototype.rankTopY
Internal cache of top-most values of Y for each rank
mxCoordinateAssignment.prototype.rankBottomY
Internal cache of bottom-most value of Y for each rank
mxCoordinateAssignment.prototype.widestRankValue
The X-coordinate of the edge of the widest rank
mxCoordinateAssignment.prototype.rankWidths
The width of all the ranks
mxCoordinateAssignment.prototype.rankY
The Y-coordinate of all the ranks
mxCoordinateAssignment.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
mxCoordinateAssignment.prototype.nextLayerConnectedCache
A store of connections to the layer above for speed
mxCoordinateAssignment.prototype.previousLayerConnectedCache
A store of connections to the layer below for speed
mxCoordinateAssignment.prototype.groupPadding
Padding added to resized parents
mxCoordinateAssignment.prototype.execute = function(parent)
A basic horizontal coordinate assignment algorithm
mxCoordinateAssignment.prototype.minNode = function(model)
Performs one median positioning sweep in both directions
mxCoordinateAssignment.prototype.medianPos = function(i,
model)
Performs one median positioning sweep in one direction
mxCoordinateAssignment.prototype.rankMedianPosition = function(rankValue,
model,
nextRankValue)
Performs median minimisation over one rank.
mxCoordinateAssignment.prototype.calculatedWeightedValue = function(
   currentCell,
   collection
)
Calculates the priority the specified cell has based on the type of its cell and the cells it is connected to on the next layer
mxCoordinateAssignment.prototype.medianXValue = function(connectedCells,
rankValue)
Calculates the median position of the connected cell on the specified rank
mxCoordinateAssignment.prototype.initialCoords = function(facade,
model)
Sets up the layout in an initial positioning.
mxCoordinateAssignment.prototype.rankCoordinates = function(rankValue,
graph,
model)
Sets up the layout in an initial positioning.
mxCoordinateAssignment.prototype.calculateWidestRank = function(graph,
model)
Calculates the width rank in the hierarchy.
mxCoordinateAssignment.prototype.minPath = function(graph,
model)
Straightens out chains of virtual nodes where possibleacade to those stored after this layout processing step has completed.
mxCoordinateAssignment.prototype.repositionValid = function(model,
cell,
rank,
position)
Determines whether or not a node may be moved to the specified x position on the specified rank
mxCoordinateAssignment.prototype.setCellLocations = function(graph,
model)
Sets the cell locations in the facade to those stored after this layout processing step has completed.
mxCoordinateAssignment.prototype.localEdgeProcessing = function(model)
Separates the x position of edges as they connect to vertices
mxCoordinateAssignment.prototype.setEdgePosition = function(cell)
Fixes the control points
mxCoordinateAssignment.prototype.setVertexLocation = function(cell)
Fixes the position of the specified vertex.
mxCoordinateAssignment.prototype.processReversedEdge = function(graph,
model)
Hook to add additional processing
function WeightedCellSorter(cell,
weightedValue)
Constructs a new weighted cell sorted for the given cell and weight.
WeightedCellSorter.prototype.weightedValue
The weighted value of the cell stored.
WeightedCellSorter.prototype.nudge
Whether or not to flip equal weight values.
WeightedCellSorter.prototype.visited
Whether or not this cell has been visited in the current assignment.
WeightedCellSorter.prototype.rankIndex
The index this cell is in the model rank.
WeightedCellSorter.prototype.cell
The cell whose median value is being calculated.
WeightedCellSorter.prototype.compare = function(a,
b)
Compares two WeightedCellSorters.
Constant for direction north.
diff --git a/docs/js-api/files/layout/hierarchical/stage/mxHierarchicalLayoutStage-js.html b/docs/js-api/files/layout/hierarchical/stage/mxHierarchicalLayoutStage-js.html index 40197c946..5a7638d7c 100644 --- a/docs/js-api/files/layout/hierarchical/stage/mxHierarchicalLayoutStage-js.html +++ b/docs/js-api/files/layout/hierarchical/stage/mxHierarchicalLayoutStage-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/stage/mxMedianHybridCrossingReduction-js.html b/docs/js-api/files/layout/hierarchical/stage/mxMedianHybridCrossingReduction-js.html index 4f08b08f0..cf7077922 100644 --- a/docs/js-api/files/layout/hierarchical/stage/mxMedianHybridCrossingReduction-js.html +++ b/docs/js-api/files/layout/hierarchical/stage/mxMedianHybridCrossingReduction-js.html @@ -69,7 +69,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/stage/mxMinimumCycleRemover-js.html b/docs/js-api/files/layout/hierarchical/stage/mxMinimumCycleRemover-js.html index 8dab4a659..b5feda32c 100644 --- a/docs/js-api/files/layout/hierarchical/stage/mxMinimumCycleRemover-js.html +++ b/docs/js-api/files/layout/hierarchical/stage/mxMinimumCycleRemover-js.html @@ -31,7 +31,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/hierarchical/stage/mxSwimlaneOrdering-js.html b/docs/js-api/files/layout/hierarchical/stage/mxSwimlaneOrdering-js.html index b84019bd3..5b8487750 100644 --- a/docs/js-api/files/layout/hierarchical/stage/mxSwimlaneOrdering-js.html +++ b/docs/js-api/files/layout/hierarchical/stage/mxSwimlaneOrdering-js.html @@ -31,7 +31,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/layout/mxCircleLayout-js.html b/docs/js-api/files/layout/mxCircleLayout-js.html index f9204135d..c5fc16f28 100644 --- a/docs/js-api/files/layout/mxCircleLayout-js.html +++ b/docs/js-api/files/layout/mxCircleLayout-js.html @@ -46,7 +46,7 @@ layout.execute(graph.getDefaultParent()); - diff --git a/docs/js-api/files/layout/mxCompactTreeLayout-js.html b/docs/js-api/files/layout/mxCompactTreeLayout-js.html index 6ef26dc95..218bb85a8 100644 --- a/docs/js-api/files/layout/mxCompactTreeLayout-js.html +++ b/docs/js-api/files/layout/mxCompactTreeLayout-js.html @@ -146,7 +146,7 @@ layout.execute(graph.getDefaultParent()); - diff --git a/docs/js-api/files/layout/mxCompositeLayout-js.html b/docs/js-api/files/layout/mxCompositeLayout-js.html index 75d193c53..bb98c7835 100644 --- a/docs/js-api/files/layout/mxCompositeLayout-js.html +++ b/docs/js-api/files/layout/mxCompositeLayout-js.html @@ -38,7 +38,7 @@ layout.execute(graph.getDefaultParent()); - diff --git a/docs/js-api/files/layout/mxEdgeLabelLayout-js.html b/docs/js-api/files/layout/mxEdgeLabelLayout-js.html index 02099308b..2132a662a 100644 --- a/docs/js-api/files/layout/mxEdgeLabelLayout-js.html +++ b/docs/js-api/files/layout/mxEdgeLabelLayout-js.html @@ -30,7 +30,7 @@ layout.execute(graph.getDefaultParent()); - diff --git a/docs/js-api/files/layout/mxFastOrganicLayout-js.html b/docs/js-api/files/layout/mxFastOrganicLayout-js.html index b33cae4d5..e39b5a0b6 100644 --- a/docs/js-api/files/layout/mxFastOrganicLayout-js.html +++ b/docs/js-api/files/layout/mxFastOrganicLayout-js.html @@ -84,7 +84,7 @@ layout.execute(graph.getDefaultParent()); - diff --git a/docs/js-api/files/layout/mxGraphLayout-js.html b/docs/js-api/files/layout/mxGraphLayout-js.html index 75f64d783..3873d27e2 100644 --- a/docs/js-api/files/layout/mxGraphLayout-js.html +++ b/docs/js-api/files/layout/mxGraphLayout-js.html @@ -68,7 +68,7 @@ graph.traverse(cell, false, function(vertex, edge) - diff --git a/docs/js-api/files/layout/mxParallelEdgeLayout-js.html b/docs/js-api/files/layout/mxParallelEdgeLayout-js.html index 35ec81bb7..18851ebd0 100644 --- a/docs/js-api/files/layout/mxParallelEdgeLayout-js.html +++ b/docs/js-api/files/layout/mxParallelEdgeLayout-js.html @@ -58,7 +58,7 @@ graph.addListener(mxEvent.CELL_CONNECTED, function(sender, evt) - diff --git a/docs/js-api/files/layout/mxPartitionLayout-js.html b/docs/js-api/files/layout/mxPartitionLayout-js.html index 47e323889..844acfc70 100644 --- a/docs/js-api/files/layout/mxPartitionLayout-js.html +++ b/docs/js-api/files/layout/mxPartitionLayout-js.html @@ -42,7 +42,7 @@ layout.execute(graph.getDefaultParent()); - diff --git a/docs/js-api/files/layout/mxRadialTreeLayout-js.html b/docs/js-api/files/layout/mxRadialTreeLayout-js.html index f8041b01d..2661f4356 100644 --- a/docs/js-api/files/layout/mxRadialTreeLayout-js.html +++ b/docs/js-api/files/layout/mxRadialTreeLayout-js.html @@ -60,7 +60,7 @@ layout.execute(graph.getDefaultParent()); - diff --git a/docs/js-api/files/layout/mxStackLayout-js.html b/docs/js-api/files/layout/mxStackLayout-js.html index f0a6059eb..28f2f7f5d 100644 --- a/docs/js-api/files/layout/mxStackLayout-js.html +++ b/docs/js-api/files/layout/mxStackLayout-js.html @@ -70,7 +70,7 @@ layout.execute(graph.getDefaultParent()); - diff --git a/docs/js-api/files/model/mxCell-js.html b/docs/js-api/files/model/mxCell-js.html index 6ff675571..6cb32060d 100644 --- a/docs/js-api/files/model/mxCell-js.html +++ b/docs/js-api/files/model/mxCell-js.html @@ -161,7 +161,7 @@ graph.cellLabelChanged = function(cell, newValue, autoSize) - diff --git a/docs/js-api/files/model/mxCellPath-js.html b/docs/js-api/files/model/mxCellPath-js.html index d71bb6394..63857d721 100644 --- a/docs/js-api/files/model/mxCellPath-js.html +++ b/docs/js-api/files/model/mxCellPath-js.html @@ -33,7 +33,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/model/mxGeometry-js.html b/docs/js-api/files/model/mxGeometry-js.html index d88e82e82..daf5840c2 100644 --- a/docs/js-api/files/model/mxGeometry-js.html +++ b/docs/js-api/files/model/mxGeometry-js.html @@ -57,7 +57,7 @@ geometry.setTerminalPoint(new mxPoint(x3, y3), false);

Cont

- diff --git a/docs/js-api/files/model/mxGraphModel-js.html b/docs/js-api/files/model/mxGraphModel-js.html index 969a104fa..00d868a21 100644 --- a/docs/js-api/files/model/mxGraphModel-js.html +++ b/docs/js-api/files/model/mxGraphModel-js.html @@ -377,7 +377,7 @@ finally - diff --git a/docs/js-api/files/mxClient-js.html b/docs/js-api/files/mxClient-js.html index b60e1c64c..3b28c6731 100644 --- a/docs/js-api/files/mxClient-js.html +++ b/docs/js-api/files/mxClient-js.html @@ -15,7 +15,7 @@ if (browserType) {document.write("
");if (browserV

Variables

-

VERSION

Contains the current version of the mxGraph library.  The strings that communicate versions of mxGraph use the following format.

versionMajor.versionMinor.buildNumber.revisionNumber

Current version is 3.1.2.1.

+

VERSION

Contains the current version of the mxGraph library.  The strings that communicate versions of mxGraph use the following format.

versionMajor.versionMinor.buildNumber.revisionNumber

Current version is 3.1.2.2.

IS_IE

IS_IE: navigator.userAgent.indexOf('MSIE') >

True if the current browser is Internet Explorer 10 or below.  Use mxClient.IS_IE11 to detect IE 11.

@@ -49,7 +49,7 @@ if (browserType) {document.write("
");if (browserV

IS_SVG

IS_SVG: navigator.userAgent.indexOf('Firefox/') >

True if the browser supports SVG.

-

NO_FO

NO_FO: !document.createElementNS || document.createElementNS(
   'http://www.w3.org/2000/svg',
   'foreignObject'
) !

True if foreignObject support is not available.  This is the case for Opera and older SVG-based browsers.

+

NO_FO

NO_FO: !document.createElementNS || document.createElementNS(
   'http://www.w3.org/2000/svg',
   'foreignObject'
) !

True if foreignObject support is not available.  This is the case for Opera, older SVG-based browsers and all versions of IE.

IS_VML

IS_VML: navigator.appName.toUpperCase()

True if the browser supports VML.

@@ -124,7 +124,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxActor-js.html b/docs/js-api/files/shape/mxActor-js.html index ec98be781..95548603e 100644 --- a/docs/js-api/files/shape/mxActor-js.html +++ b/docs/js-api/files/shape/mxActor-js.html @@ -39,7 +39,7 @@ SampleShape.prototype.redrawPath = function(path, x, y, w, h) - diff --git a/docs/js-api/files/shape/mxArrow-js.html b/docs/js-api/files/shape/mxArrow-js.html index 5fcced30b..81a39695c 100644 --- a/docs/js-api/files/shape/mxArrow-js.html +++ b/docs/js-api/files/shape/mxArrow-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxCloud-js.html b/docs/js-api/files/shape/mxCloud-js.html index 420a9a43e..431efa52f 100644 --- a/docs/js-api/files/shape/mxCloud-js.html +++ b/docs/js-api/files/shape/mxCloud-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxConnector-js.html b/docs/js-api/files/shape/mxConnector-js.html index 49fb5f1cb..487fc291a 100644 --- a/docs/js-api/files/shape/mxConnector-js.html +++ b/docs/js-api/files/shape/mxConnector-js.html @@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxCylinder-js.html b/docs/js-api/files/shape/mxCylinder-js.html index c40a74a54..1976defbd 100644 --- a/docs/js-api/files/shape/mxCylinder-js.html +++ b/docs/js-api/files/shape/mxCylinder-js.html @@ -35,7 +35,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxDoubleEllipse-js.html b/docs/js-api/files/shape/mxDoubleEllipse-js.html index 78b90a547..cc23911b1 100644 --- a/docs/js-api/files/shape/mxDoubleEllipse-js.html +++ b/docs/js-api/files/shape/mxDoubleEllipse-js.html @@ -52,7 +52,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxEllipse-js.html b/docs/js-api/files/shape/mxEllipse-js.html index e11901292..775a8dfbc 100644 --- a/docs/js-api/files/shape/mxEllipse-js.html +++ b/docs/js-api/files/shape/mxEllipse-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxHexagon-js.html b/docs/js-api/files/shape/mxHexagon-js.html index 9e19a6fef..40f0c1566 100644 --- a/docs/js-api/files/shape/mxHexagon-js.html +++ b/docs/js-api/files/shape/mxHexagon-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxImageShape-js.html b/docs/js-api/files/shape/mxImageShape-js.html index 4d7050efd..7af1fb789 100644 --- a/docs/js-api/files/shape/mxImageShape-js.html +++ b/docs/js-api/files/shape/mxImageShape-js.html @@ -41,7 +41,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxLabel-js.html b/docs/js-api/files/shape/mxLabel-js.html index ee8dec5e9..5243f5063 100644 --- a/docs/js-api/files/shape/mxLabel-js.html +++ b/docs/js-api/files/shape/mxLabel-js.html @@ -53,7 +53,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxLine-js.html b/docs/js-api/files/shape/mxLine-js.html index 1c5acc08a..2d2ddaad8 100644 --- a/docs/js-api/files/shape/mxLine-js.html +++ b/docs/js-api/files/shape/mxLine-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxMarker-js.html b/docs/js-api/files/shape/mxMarker-js.html index 1391c5fbb..42ace573f 100644 --- a/docs/js-api/files/shape/mxMarker-js.html +++ b/docs/js-api/files/shape/mxMarker-js.html @@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxPolyline-js.html b/docs/js-api/files/shape/mxPolyline-js.html index e8de399be..766f66ffd 100644 --- a/docs/js-api/files/shape/mxPolyline-js.html +++ b/docs/js-api/files/shape/mxPolyline-js.html @@ -35,7 +35,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxRectangleShape-js.html b/docs/js-api/files/shape/mxRectangleShape-js.html index 3528d95c0..280ff4cea 100644 --- a/docs/js-api/files/shape/mxRectangleShape-js.html +++ b/docs/js-api/files/shape/mxRectangleShape-js.html @@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxRhombus-js.html b/docs/js-api/files/shape/mxRhombus-js.html index c69a4fc76..ee88b129d 100644 --- a/docs/js-api/files/shape/mxRhombus-js.html +++ b/docs/js-api/files/shape/mxRhombus-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxShape-js.html b/docs/js-api/files/shape/mxShape-js.html index e311690b3..353188db9 100644 --- a/docs/js-api/files/shape/mxShape-js.html +++ b/docs/js-api/files/shape/mxShape-js.html @@ -167,7 +167,7 @@ style[mxConstants.STYLE_SHAPE] = 'customShape'; - diff --git a/docs/js-api/files/shape/mxStencil-js.html b/docs/js-api/files/shape/mxStencil-js.html index b369f20ad..01b00392a 100644 --- a/docs/js-api/files/shape/mxStencil-js.html +++ b/docs/js-api/files/shape/mxStencil-js.html @@ -69,7 +69,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxStencilRegistry-js.html b/docs/js-api/files/shape/mxStencilRegistry-js.html index c895a6371..b27a8af5a 100644 --- a/docs/js-api/files/shape/mxStencilRegistry-js.html +++ b/docs/js-api/files/shape/mxStencilRegistry-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxSwimlane-js.html b/docs/js-api/files/shape/mxSwimlane-js.html index 3189a7d26..28f4c7239 100644 --- a/docs/js-api/files/shape/mxSwimlane-js.html +++ b/docs/js-api/files/shape/mxSwimlane-js.html @@ -49,7 +49,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxText-js.html b/docs/js-api/files/shape/mxText-js.html index ef5833cc7..e661ccfcd 100644 --- a/docs/js-api/files/shape/mxText-js.html +++ b/docs/js-api/files/shape/mxText-js.html @@ -87,7 +87,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/shape/mxTriangle-js.html b/docs/js-api/files/shape/mxTriangle-js.html index 5036f2a9b..cec6abc94 100644 --- a/docs/js-api/files/shape/mxTriangle-js.html +++ b/docs/js-api/files/shape/mxTriangle-js.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxAbstractCanvas2D-js.html b/docs/js-api/files/util/mxAbstractCanvas2D-js.html index 83a633bc4..228dff17e 100644 --- a/docs/js-api/files/util/mxAbstractCanvas2D-js.html +++ b/docs/js-api/files/util/mxAbstractCanvas2D-js.html @@ -131,7 +131,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxAnimation-js.html b/docs/js-api/files/util/mxAnimation-js.html index a439d9c84..57aa9efe2 100644 --- a/docs/js-api/files/util/mxAnimation-js.html +++ b/docs/js-api/files/util/mxAnimation-js.html @@ -39,7 +39,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxAutoSaveManager-js.html b/docs/js-api/files/util/mxAutoSaveManager-js.html index 52b294a68..852f628b6 100644 --- a/docs/js-api/files/util/mxAutoSaveManager-js.html +++ b/docs/js-api/files/util/mxAutoSaveManager-js.html @@ -62,7 +62,7 @@ mgr.save = function() - diff --git a/docs/js-api/files/util/mxClipboard-js.html b/docs/js-api/files/util/mxClipboard-js.html index 89c1dd52f..6ca2eaacf 100644 --- a/docs/js-api/files/util/mxClipboard-js.html +++ b/docs/js-api/files/util/mxClipboard-js.html @@ -89,7 +89,7 @@ mxClipboard.paste = function(graph) - diff --git a/docs/js-api/files/util/mxConstants-js.html b/docs/js-api/files/util/mxConstants-js.html index 23d4fafd2..b4763d514 100644 --- a/docs/js-api/files/util/mxConstants-js.html +++ b/docs/js-api/files/util/mxConstants-js.html @@ -503,7 +503,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxDictionary-js.html b/docs/js-api/files/util/mxDictionary-js.html index 61e3191d4..4b4d027c5 100644 --- a/docs/js-api/files/util/mxDictionary-js.html +++ b/docs/js-api/files/util/mxDictionary-js.html @@ -39,7 +39,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxDivResizer-js.html b/docs/js-api/files/util/mxDivResizer-js.html index 668ec9a20..a8d3aee76 100644 --- a/docs/js-api/files/util/mxDivResizer-js.html +++ b/docs/js-api/files/util/mxDivResizer-js.html @@ -44,7 +44,7 @@ resizer.resize(); - diff --git a/docs/js-api/files/util/mxDragSource-js.html b/docs/js-api/files/util/mxDragSource-js.html index 5e5bf2468..d5fc4e177 100644 --- a/docs/js-api/files/util/mxDragSource-js.html +++ b/docs/js-api/files/util/mxDragSource-js.html @@ -117,7 +117,7 @@ dragSource.mouseDown = function(evt) - diff --git a/docs/js-api/files/util/mxEffects-js.html b/docs/js-api/files/util/mxEffects-js.html index f4a72bc5e..fd2db0b80 100644 --- a/docs/js-api/files/util/mxEffects-js.html +++ b/docs/js-api/files/util/mxEffects-js.html @@ -35,7 +35,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxEvent-js.html b/docs/js-api/files/util/mxEvent-js.html index 55ca9d074..9afb2ec48 100644 --- a/docs/js-api/files/util/mxEvent-js.html +++ b/docs/js-api/files/util/mxEvent-js.html @@ -277,7 +277,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxEventObject-js.html b/docs/js-api/files/util/mxEventObject-js.html index b0010a021..47f826549 100644 --- a/docs/js-api/files/util/mxEventObject-js.html +++ b/docs/js-api/files/util/mxEventObject-js.html @@ -44,7 +44,7 @@ INV: evt.isConsumed() == true - diff --git a/docs/js-api/files/util/mxEventSource-js.html b/docs/js-api/files/util/mxEventSource-js.html index ca3bf9f39..6d22422d9 100644 --- a/docs/js-api/files/util/mxEventSource-js.html +++ b/docs/js-api/files/util/mxEventSource-js.html @@ -50,7 +50,7 @@ MyClass.prototype.constructor = MyClass;

Kn - diff --git a/docs/js-api/files/util/mxForm-js.html b/docs/js-api/files/util/mxForm-js.html index e22482895..c9550d304 100644 --- a/docs/js-api/files/util/mxForm-js.html +++ b/docs/js-api/files/util/mxForm-js.html @@ -47,7 +47,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxGuide-js.html b/docs/js-api/files/util/mxGuide-js.html index a16fb1743..a15fd1b24 100644 --- a/docs/js-api/files/util/mxGuide-js.html +++ b/docs/js-api/files/util/mxGuide-js.html @@ -53,7 +53,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxImage-js.html b/docs/js-api/files/util/mxImage-js.html index 346c155b8..d72c719bb 100644 --- a/docs/js-api/files/util/mxImage-js.html +++ b/docs/js-api/files/util/mxImage-js.html @@ -31,7 +31,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxImageBundle-js.html b/docs/js-api/files/util/mxImageBundle-js.html index 2931c5763..a684239bd 100644 --- a/docs/js-api/files/util/mxImageBundle-js.html +++ b/docs/js-api/files/util/mxImageBundle-js.html @@ -63,7 +63,7 @@ all data URIs should be limited to 32 KB. - diff --git a/docs/js-api/files/util/mxImageExport-js.html b/docs/js-api/files/util/mxImageExport-js.html index e613f923c..906a69bcc 100644 --- a/docs/js-api/files/util/mxImageExport-js.html +++ b/docs/js-api/files/util/mxImageExport-js.html @@ -58,7 +58,7 @@ new mxXmlRequest('export', 'format=png&w=' + w + - diff --git a/docs/js-api/files/util/mxLog-js.html b/docs/js-api/files/util/mxLog-js.html index bdeb51946..9c093b978 100644 --- a/docs/js-api/files/util/mxLog-js.html +++ b/docs/js-api/files/util/mxLog-js.html @@ -62,7 +62,7 @@ mxLog.warn('Hello, World!');
- diff --git a/docs/js-api/files/util/mxMorphing-js.html b/docs/js-api/files/util/mxMorphing-js.html index e6cae6a40..c6e13a0b8 100644 --- a/docs/js-api/files/util/mxMorphing-js.html +++ b/docs/js-api/files/util/mxMorphing-js.html @@ -64,7 +64,7 @@ finally - diff --git a/docs/js-api/files/util/mxMouseEvent-js.html b/docs/js-api/files/util/mxMouseEvent-js.html index d261a5700..745db2611 100644 --- a/docs/js-api/files/util/mxMouseEvent-js.html +++ b/docs/js-api/files/util/mxMouseEvent-js.html @@ -75,7 +75,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxObjectIdentity-js.html b/docs/js-api/files/util/mxObjectIdentity-js.html index 1c0d2fbfe..a4f7c9184 100644 --- a/docs/js-api/files/util/mxObjectIdentity-js.html +++ b/docs/js-api/files/util/mxObjectIdentity-js.html @@ -31,7 +31,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxPanningManager-js.html b/docs/js-api/files/util/mxPanningManager-js.html index e9820a538..1d61846fd 100644 --- a/docs/js-api/files/util/mxPanningManager-js.html +++ b/docs/js-api/files/util/mxPanningManager-js.html @@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxPoint-js.html b/docs/js-api/files/util/mxPoint-js.html index 815ba6eef..2e1ed6428 100644 --- a/docs/js-api/files/util/mxPoint-js.html +++ b/docs/js-api/files/util/mxPoint-js.html @@ -35,7 +35,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxPopupMenu-js.html b/docs/js-api/files/util/mxPopupMenu-js.html index 7c40f505f..76f9a2938 100644 --- a/docs/js-api/files/util/mxPopupMenu-js.html +++ b/docs/js-api/files/util/mxPopupMenu-js.html @@ -59,7 +59,7 @@ mxPopupMenu.prototype.showMenu = function()

isPopupTrigger

mxPopupMenu.prototype.isPopupTrigger = function(me)

Returns true if the given event is a popupmenu trigger for the optional given cell.

Parameters

memxMouseEvent that represents the mouse event.
-

addItem

mxPopupMenu.prototype.addItem = function(title,
image,
funct,
parent,
iconCls,
enabled)

Adds the given item to the given parent item.  If no parent item is specified then the item is added to the top-level menu.  The return value may be used as the parent argument, ie. as a submenu item.  The return value is the table row that represents the item.

Paramters

titleString that represents the title of the menu item.
imageOptional URL for the image icon.
functFunction associated that takes a mouseup or touchend event.
parentOptional item returned by addItem.
iconClsOptional string that represents the CSS class for the image icon.  IconsCls is ignored if image is given.
enabledOptional boolean indicating if the item is enabled.  Default is true.
+

addItem

mxPopupMenu.prototype.addItem = function(title,
image,
funct,
parent,
iconCls,
enabled,
active)

Adds the given item to the given parent item.  If no parent item is specified then the item is added to the top-level menu.  The return value may be used as the parent argument, ie. as a submenu item.  The return value is the table row that represents the item.

Paramters

titleString that represents the title of the menu item.
imageOptional URL for the image icon.
functFunction associated that takes a mouseup or touchend event.
parentOptional item returned by addItem.
iconClsOptional string that represents the CSS class for the image icon.  IconsCls is ignored if image is given.
enabledOptional boolean indicating if the item is enabled.  Default is true.
activeOptional boolean indicating if the menu should implement any event handling.  Default is true.

createSubmenu

mxPopupMenu.prototype.createSubmenu = function(parent)

Creates the nodes required to add submenu items inside the given parent item.  This is called in addItem if a parent item is used for the first time.  This adds various DOM nodes and a submenuImage to the parent.

Parameters

parentAn item returned by addItem.
@@ -88,7 +88,7 @@ mxPopupMenu.prototype.showMenu = function() - @@ -96,7 +96,7 @@ HideAllBut([10], 13);// -->
-
mxPopupMenu.prototype.popup = function(x,
y,
cell,
evt)
Shows the popup menu for the given event and cell.
mxPopupMenu.prototype.submenuImage
URL of the image to be used for the submenu icon.
mxPopupMenu.prototype.zIndex
Specifies the zIndex for the popupmenu and its shadow.
mxPopupMenu.prototype.factoryMethod
Function that is used to create the popup menu.
mxPopupMenu.prototype.useLeftButtonForPopup
Specifies if popupmenus should be activated by clicking the left mouse button.
mxPopupMenu.prototype.enabled
Specifies if events are handled.
mxPopupMenu.prototype.itemCount
Contains the number of times addItem has been called for a new menu.
mxPopupMenu.prototype.addItem = function(title,
image,
funct,
parent,
iconCls,
enabled)
Adds the given item to the given parent item.
mxPopupMenu.prototype.autoExpand
Specifies if submenus should be expanded on mouseover.
mxPopupMenu.prototype.smartSeparators
Specifies if separators should only be added if a menu item follows them.
mxPopupMenu.prototype.labels
Specifies if any labels should be visible.
mxPopupMenu.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxPopupMenu.prototype.isEnabled = function()
Returns true if events are handled.
mxPopupMenu.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxPopupMenu.prototype.isPopupTrigger = function(me)
Returns true if the given event is a popupmenu trigger for the optional given cell.
mxPopupMenu.prototype.createSubmenu = function(parent)
Creates the nodes required to add submenu items inside the given parent item.
mxPopupMenu.prototype.showSubmenu = function(parent,
row)
Shows the submenu inside the given parent row.
mxPopupMenu.prototype.addSeparator = function(parent,
force)
Adds a horizontal separator in the given parent item or the top-level menu if no parent is specified.
mxPopupMenu.prototype.isMenuShowing = function()
Returns true if the menu is showing.
mxPopupMenu.prototype.showMenu = function()
Shows the menu.
mxPopupMenu.prototype.hideMenu = function()
Removes the menu and all submenus.
mxPopupMenu.prototype.hideSubmenu = function(parent)
Removes all submenus inside the given parent.
mxPopupMenu.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
Cells are the elements of the graph model.
Base class for all mouse events in mxGraph.
+
mxPopupMenu.prototype.popup = function(x,
y,
cell,
evt)
Shows the popup menu for the given event and cell.
mxPopupMenu.prototype.submenuImage
URL of the image to be used for the submenu icon.
mxPopupMenu.prototype.zIndex
Specifies the zIndex for the popupmenu and its shadow.
mxPopupMenu.prototype.factoryMethod
Function that is used to create the popup menu.
mxPopupMenu.prototype.useLeftButtonForPopup
Specifies if popupmenus should be activated by clicking the left mouse button.
mxPopupMenu.prototype.enabled
Specifies if events are handled.
mxPopupMenu.prototype.itemCount
Contains the number of times addItem has been called for a new menu.
mxPopupMenu.prototype.addItem = function(title,
image,
funct,
parent,
iconCls,
enabled,
active)
Adds the given item to the given parent item.
mxPopupMenu.prototype.autoExpand
Specifies if submenus should be expanded on mouseover.
mxPopupMenu.prototype.smartSeparators
Specifies if separators should only be added if a menu item follows them.
mxPopupMenu.prototype.labels
Specifies if any labels should be visible.
mxPopupMenu.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxPopupMenu.prototype.isEnabled = function()
Returns true if events are handled.
mxPopupMenu.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxPopupMenu.prototype.isPopupTrigger = function(me)
Returns true if the given event is a popupmenu trigger for the optional given cell.
mxPopupMenu.prototype.createSubmenu = function(parent)
Creates the nodes required to add submenu items inside the given parent item.
mxPopupMenu.prototype.showSubmenu = function(parent,
row)
Shows the submenu inside the given parent row.
mxPopupMenu.prototype.addSeparator = function(parent,
force)
Adds a horizontal separator in the given parent item or the top-level menu if no parent is specified.
mxPopupMenu.prototype.isMenuShowing = function()
Returns true if the menu is showing.
mxPopupMenu.prototype.showMenu = function()
Shows the menu.
mxPopupMenu.prototype.hideMenu = function()
Removes the menu and all submenus.
mxPopupMenu.prototype.hideSubmenu = function(parent)
Removes all submenus inside the given parent.
mxPopupMenu.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
Cells are the elements of the graph model.
Base class for all mouse events in mxGraph.
diff --git a/docs/js-api/files/util/mxRectangle-js.html b/docs/js-api/files/util/mxRectangle-js.html index 1869a42e0..da57b1f2e 100644 --- a/docs/js-api/files/util/mxRectangle-js.html +++ b/docs/js-api/files/util/mxRectangle-js.html @@ -49,7 +49,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxResources-js.html b/docs/js-api/files/util/mxResources-js.html index bdc70d01c..5da9bb9d6 100644 --- a/docs/js-api/files/util/mxResources-js.html +++ b/docs/js-api/files/util/mxResources-js.html @@ -47,7 +47,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxSvgCanvas2D-js.html b/docs/js-api/files/util/mxSvgCanvas2D-js.html index 09631ae04..ccfd3cfc4 100644 --- a/docs/js-api/files/util/mxSvgCanvas2D-js.html +++ b/docs/js-api/files/util/mxSvgCanvas2D-js.html @@ -11,7 +11,7 @@ if (browserType) {document.write("
");if (browserV -

mxSvgCanvas2D

Extends mxAbstractCanvas2D to implement a canvas for SVG.  This canvas writes all calls as SVG output to the given SVG root node.

var svgDoc = mxUtils.createXmlDocument();
+

mxSvgCanvas2D

Extends mxAbstractCanvas2D to implement a canvas for SVG.  This canvas writes all calls as SVG output to the given SVG root node.

var svgDoc = mxUtils.createXmlDocument();
 var root = (svgDoc.createElementNS != null) ?
      svgDoc.createElementNS(mxConstants.NS_SVG, 'svg') : svgDoc.createElement('svg');
 
@@ -32,7 +32,7 @@ root.setAttribute('version', '1.1');
 
 svgDoc.appendChild(root);
 
-var svgCanvas = new mxSvgCanvas2D(root);

A description of the public API is available in mxXmlCanvas2D.

To disable anti-aliasing in the output, use the following code.

graph.view.canvas.ownerSVGElement.setAttribute('shape-rendering', 'crispEdges');

Or set the respective attribute in the SVG element directly.

Summary
mxSvgCanvas2DExtends mxAbstractCanvas2D to implement a canvas for SVG.
Functions
mxSvgCanvas2DConstructs a new SVG canvas.
Variables
rootReference to the container for the SVG content.
gradientsLocal cache of gradients for quick lookups.
defsReference to the defs section of the SVG document.
styleEnabledStores the value of styleEnabled passed to the constructor.
pathHolds the current DOM node.
matchHtmlAlignmentSpecifies if plain text output should match the vertical HTML alignment.
textEnabledSpecifies if text output should be enabled.
foEnabledSpecifies if use of foreignObject for HTML markup is allowed.
foAltTextSpecifies the fallback text for unsupported foreignObjects in exported documents.
strokeToleranceAdds transparent paths for strokes.
refCountLocal counter for references in SVG export.
blockImagePointerEventsSpecifies if a transparent rectangle should be added on top of images to absorb all pointer events.
lineHeightCorrectionCorrection factor for mxConstants.LINE_HEIGHT in HTML output.
pointerEventsValueDefault value for active pointer events.
fontMetricsPaddingPadding to be added for text that is not wrapped to account for differences in font metrics on different platforms in pixels.
Functions
formatRounds all numbers to 2 decimal points.
getBaseUrlReturns the URL of the page without the hash part.
resetReturns any offsets for rendering pixels.
createStyleCreates the optional style section.
createElementPrivate helper function to create SVG elements
getAlternateContentReturns the alternate content for the given foreignObject.
createGradientIdPrivate helper function to create SVG elements
getSvgGradientPrivate helper function to create SVG elements
createSvgGradientCreates the given SVG gradient.
addNodePrivate helper function to create SVG elements
updateFillTransfers the stroke attributes from <state> to <node>.
getCurrentStrokeWidthReturns the current stroke width (>= 1), ie.
updateStrokeTransfers the stroke attributes from <state> to <node>.
updateStrokeAttributesTransfers the stroke attributes from <state> to <node>.
createDashPatternCreates the SVG dash pattern for the given state.
createToleranceCreates a hit detection tolerance shape for the given node.
createShadowCreates a shadow for the given node.
setLinkExperimental implementation for hyperlinks.
rotateSets the rotation of the canvas.
beginExtends superclass to create path.
rectPrivate helper function to create SVG elements
roundrectPrivate helper function to create SVG elements
ellipsePrivate helper function to create SVG elements
imagePrivate helper function to create SVG elements
createDivPrivate helper function to create SVG elements
textPaints the given text.
createClipCreates a clip for the given coordinates.
textPaints the given text.
updateFontUpdates the text properties for the given node.
addTextBackgroundBackground color and border
strokePaints the outline of the current path.
fillFills the current path.
fillAndStrokeFills and paints the outline of the current path.
+var svgCanvas = new mxSvgCanvas2D(root);

A description of the public API is available in mxXmlCanvas2D.

To disable anti-aliasing in the output, use the following code.

graph.view.canvas.ownerSVGElement.setAttribute('shape-rendering', 'crispEdges');

Or set the respective attribute in the SVG element directly.

Summary
mxSvgCanvas2DExtends mxAbstractCanvas2D to implement a canvas for SVG.
Functions
mxSvgCanvas2DConstructs a new SVG canvas.
Variables
rootReference to the container for the SVG content.
gradientsLocal cache of gradients for quick lookups.
defsReference to the defs section of the SVG document.
styleEnabledStores the value of styleEnabled passed to the constructor.
pathHolds the current DOM node.
matchHtmlAlignmentSpecifies if plain text output should match the vertical HTML alignment.
textEnabledSpecifies if text output should be enabled.
foEnabledSpecifies if use of foreignObject for HTML markup is allowed.
foAltTextSpecifies the fallback text for unsupported foreignObjects in exported documents.
strokeToleranceAdds transparent paths for strokes.
refCountLocal counter for references in SVG export.
blockImagePointerEventsSpecifies if a transparent rectangle should be added on top of images to absorb all pointer events.
lineHeightCorrectionCorrection factor for mxConstants.LINE_HEIGHT in HTML output.
pointerEventsValueDefault value for active pointer events.
fontMetricsPaddingPadding to be added for text that is not wrapped to account for differences in font metrics on different platforms in pixels.
Functions
formatRounds all numbers to 2 decimal points.
getBaseUrlReturns the URL of the page without the hash part.
resetReturns any offsets for rendering pixels.
createStyleCreates the optional style section.
createElementPrivate helper function to create SVG elements
getAlternateContentReturns the alternate content for the given foreignObject.
createGradientIdPrivate helper function to create SVG elements
getSvgGradientPrivate helper function to create SVG elements
createSvgGradientCreates the given SVG gradient.
addNodePrivate helper function to create SVG elements
updateFillTransfers the stroke attributes from <state> to <node>.
getCurrentStrokeWidthReturns the current stroke width (>= 1), ie.
updateStrokeTransfers the stroke attributes from <state> to <node>.
updateStrokeAttributesTransfers the stroke attributes from <state> to <node>.
createDashPatternCreates the SVG dash pattern for the given state.
createToleranceCreates a hit detection tolerance shape for the given node.
createShadowCreates a shadow for the given node.
setLinkExperimental implementation for hyperlinks.
rotateSets the rotation of the canvas.
beginExtends superclass to create path.
rectPrivate helper function to create SVG elements
roundrectPrivate helper function to create SVG elements
ellipsePrivate helper function to create SVG elements
imagePrivate helper function to create SVG elements
convertHtmlConverts the given HTML string to XHTML.
createDivPrivate helper function to create SVG elements
textPaints the given text.
createClipCreates a clip for the given coordinates.
textPaints the given text.
updateFontUpdates the text properties for the given node.
addTextBackgroundBackground color and border
strokePaints the outline of the current path.
fillFills the current path.
fillAndStrokeFills and paints the outline of the current path.

Functions

@@ -64,7 +64,7 @@ var svgCanvas = new mxSvgCanvas2D(root);

A description of t

blockImagePointerEvents

mxSvgCanvas2D.prototype.blockImagePointerEvents

Specifies if a transparent rectangle should be added on top of images to absorb all pointer events.  Default is false.  This is only needed in Firefox to disable control-clicks on images.

-

lineHeightCorrection

mxSvgCanvas2D.prototype.lineHeightCorrection

Correction factor for mxConstants.LINE_HEIGHT in HTML output.  Default is 1.05.

+

lineHeightCorrection

mxSvgCanvas2D.prototype.lineHeightCorrection

Correction factor for mxConstants.LINE_HEIGHT in HTML output.  Default is 1.05.

pointerEventsValue

mxSvgCanvas2D.prototype.pointerEventsValue

Default value for active pointer events.  Default is all.

@@ -120,9 +120,11 @@ var svgCanvas = new mxSvgCanvas2D(root);

A description of t

image

mxSvgCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)

Private helper function to create SVG elements

+

convertHtml

mxSvgCanvas2D.prototype.convertHtml = function(val)

Converts the given HTML string to XHTML.

+

createDiv

mxSvgCanvas2D.prototype.createDiv = function(str,
align,
valign,
style,
overflow)

Private helper function to create SVG elements

-

text

mxSvgCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)

Paints the given text.  Possible values for format are empty string for plain text and html for HTML markup.  Note that HTML markup is only supported if foreignObject is supported and foEnabled is true.  (This means IE9 and later does currently not support HTML text as part of shapes.)

+

text

mxSvgCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)

Paints the given text.  Possible values for format are empty string for plain text and html for HTML markup.  Note that HTML markup is only supported if foreignObject is supported and foEnabled is true.  (This means IE9 and later does currently not support HTML text as part of shapes.)

createClip

mxSvgCanvas2D.prototype.createClip = function(x,
y,
w,
h)

Creates a clip for the given coordinates.

@@ -144,7 +146,7 @@ var svgCanvas = new mxSvgCanvas2D(root);

A description of t

- @@ -152,7 +154,7 @@ HideAllBut([10], 13);// -->
-
Base class for all canvases.
function mxSvgCanvas2D(root,
styleEnabled)
Constructs a new SVG canvas.
this.root
Reference to the container for the SVG content.
this.gradients
Local cache of gradients for quick lookups.
this.defs
Reference to the defs section of the SVG document.
this.styleEnabled
Stores the value of styleEnabled passed to the constructor.
mxSvgCanvas2D.prototype.matchHtmlAlignment
Specifies if plain text output should match the vertical HTML alignment.
mxSvgCanvas2D.prototype.textEnabled
Specifies if text output should be enabled.
mxSvgCanvas2D.prototype.foEnabled
Specifies if use of foreignObject for HTML markup is allowed.
mxSvgCanvas2D.prototype.foAltText
Specifies the fallback text for unsupported foreignObjects in exported documents.
mxSvgCanvas2D.prototype.strokeTolerance
Adds transparent paths for strokes.
mxSvgCanvas2D.prototype.refCount
Local counter for references in SVG export.
mxSvgCanvas2D.prototype.blockImagePointerEvents
Specifies if a transparent rectangle should be added on top of images to absorb all pointer events.
mxSvgCanvas2D.prototype.lineHeightCorrection
Correction factor for mxConstants.LINE_HEIGHT in HTML output.
Defines the default line height for text labels.
mxSvgCanvas2D.prototype.pointerEventsValue
Default value for active pointer events.
mxSvgCanvas2D.prototype.fontMetricsPadding
Padding to be added for text that is not wrapped to account for differences in font metrics on different platforms in pixels.
mxSvgCanvas2D.prototype.format = function(value)
Rounds all numbers to 2 decimal points.
mxSvgCanvas2D.prototype.getBaseUrl = function()
Returns the URL of the page without the hash part.
mxSvgCanvas2D.prototype.reset = function()
Returns any offsets for rendering pixels.
mxSvgCanvas2D.prototype.createStyle = function(x)
Creates the optional style section.
mxSvgCanvas2D.prototype.createElement = function(tagName,
namespace)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.createGradientId = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.getSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.createSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Creates the given SVG gradient.
mxSvgCanvas2D.prototype.addNode = function(filled,
stroked)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.updateFill = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.getCurrentStrokeWidth = function()
Returns the current stroke width (>= 1), ie.
mxSvgCanvas2D.prototype.updateStroke = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.updateStrokeAttributes = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.createDashPattern = function(scale)
Creates the SVG dash pattern for the given state.
mxSvgCanvas2D.prototype.createTolerance = function(node)
Creates a hit detection tolerance shape for the given node.
mxSvgCanvas2D.prototype.createShadow = function(node)
Creates a shadow for the given node.
mxSvgCanvas2D.prototype.setLink = function(link)
Experimental implementation for hyperlinks.
mxSvgCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxSvgCanvas2D.prototype.begin = function()
Extends superclass to create path.
mxSvgCanvas2D.prototype.rect = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.createDiv = function(str,
align,
valign,
style,
overflow)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxSvgCanvas2D.prototype.createClip = function(x,
y,
w,
h)
Creates a clip for the given coordinates.
mxSvgCanvas2D.prototype.updateFont = function(node)
Updates the text properties for the given node.
mxSvgCanvas2D.prototype.addTextBackground = function(node,
str,
x,
y,
w,
h,
align,
valign,
overflow)
Background color and border
mxSvgCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxSvgCanvas2D.prototype.fill = function()
Fills the current path.
mxSvgCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
Base class for all canvases.
+
Base class for all canvases.
function mxSvgCanvas2D(root,
styleEnabled)
Constructs a new SVG canvas.
this.root
Reference to the container for the SVG content.
this.gradients
Local cache of gradients for quick lookups.
this.defs
Reference to the defs section of the SVG document.
this.styleEnabled
Stores the value of styleEnabled passed to the constructor.
mxSvgCanvas2D.prototype.matchHtmlAlignment
Specifies if plain text output should match the vertical HTML alignment.
mxSvgCanvas2D.prototype.textEnabled
Specifies if text output should be enabled.
mxSvgCanvas2D.prototype.foEnabled
Specifies if use of foreignObject for HTML markup is allowed.
mxSvgCanvas2D.prototype.foAltText
Specifies the fallback text for unsupported foreignObjects in exported documents.
mxSvgCanvas2D.prototype.strokeTolerance
Adds transparent paths for strokes.
mxSvgCanvas2D.prototype.refCount
Local counter for references in SVG export.
mxSvgCanvas2D.prototype.blockImagePointerEvents
Specifies if a transparent rectangle should be added on top of images to absorb all pointer events.
mxSvgCanvas2D.prototype.lineHeightCorrection
Correction factor for mxConstants.LINE_HEIGHT in HTML output.
Defines the default line height for text labels.
mxSvgCanvas2D.prototype.pointerEventsValue
Default value for active pointer events.
mxSvgCanvas2D.prototype.fontMetricsPadding
Padding to be added for text that is not wrapped to account for differences in font metrics on different platforms in pixels.
mxSvgCanvas2D.prototype.format = function(value)
Rounds all numbers to 2 decimal points.
mxSvgCanvas2D.prototype.getBaseUrl = function()
Returns the URL of the page without the hash part.
mxSvgCanvas2D.prototype.reset = function()
Returns any offsets for rendering pixels.
mxSvgCanvas2D.prototype.createStyle = function(x)
Creates the optional style section.
mxSvgCanvas2D.prototype.createElement = function(tagName,
namespace)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.createGradientId = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.getSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.createSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Creates the given SVG gradient.
mxSvgCanvas2D.prototype.addNode = function(filled,
stroked)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.updateFill = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.getCurrentStrokeWidth = function()
Returns the current stroke width (>= 1), ie.
mxSvgCanvas2D.prototype.updateStroke = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.updateStrokeAttributes = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.createDashPattern = function(scale)
Creates the SVG dash pattern for the given state.
mxSvgCanvas2D.prototype.createTolerance = function(node)
Creates a hit detection tolerance shape for the given node.
mxSvgCanvas2D.prototype.createShadow = function(node)
Creates a shadow for the given node.
mxSvgCanvas2D.prototype.setLink = function(link)
Experimental implementation for hyperlinks.
mxSvgCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxSvgCanvas2D.prototype.begin = function()
Extends superclass to create path.
mxSvgCanvas2D.prototype.rect = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.convertHtml = function(val)
Converts the given HTML string to XHTML.
mxSvgCanvas2D.prototype.createDiv = function(str,
align,
valign,
style,
overflow)
Private helper function to create SVG elements
mxSvgCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxSvgCanvas2D.prototype.createClip = function(x,
y,
w,
h)
Creates a clip for the given coordinates.
mxSvgCanvas2D.prototype.updateFont = function(node)
Updates the text properties for the given node.
mxSvgCanvas2D.prototype.addTextBackground = function(node,
str,
x,
y,
w,
h,
align,
valign,
overflow)
Background color and border
mxSvgCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxSvgCanvas2D.prototype.fill = function()
Fills the current path.
mxSvgCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
Base class for all canvases.
diff --git a/docs/js-api/files/util/mxToolbar-js.html b/docs/js-api/files/util/mxToolbar-js.html index 00d2536a1..5a5f0a371 100644 --- a/docs/js-api/files/util/mxToolbar-js.html +++ b/docs/js-api/files/util/mxToolbar-js.html @@ -63,7 +63,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxUndoManager-js.html b/docs/js-api/files/util/mxUndoManager-js.html index 08784a48d..7aec71a7f 100644 --- a/docs/js-api/files/util/mxUndoManager-js.html +++ b/docs/js-api/files/util/mxUndoManager-js.html @@ -65,7 +65,7 @@ graph.getView().addListener(mxEvent.UNDO, listener);

The co

- diff --git a/docs/js-api/files/util/mxUndoableEdit-js.html b/docs/js-api/files/util/mxUndoableEdit-js.html index 9cfab811c..5b0d19ca8 100644 --- a/docs/js-api/files/util/mxUndoableEdit-js.html +++ b/docs/js-api/files/util/mxUndoableEdit-js.html @@ -74,7 +74,7 @@ graph.model.execute(new CustomChange(graph.model, name)); - diff --git a/docs/js-api/files/util/mxUrlConverter-js.html b/docs/js-api/files/util/mxUrlConverter-js.html index 92176ef94..6e0c71d83 100644 --- a/docs/js-api/files/util/mxUrlConverter-js.html +++ b/docs/js-api/files/util/mxUrlConverter-js.html @@ -47,7 +47,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxUtils-js.html b/docs/js-api/files/util/mxUtils-js.html index c5c95849e..a20ecea92 100644 --- a/docs/js-api/files/util/mxUtils-js.html +++ b/docs/js-api/files/util/mxUtils-js.html @@ -11,7 +11,7 @@ if (browserType) {document.write("
");if (browserV -

mxUtils

A singleton class that provides cross-browser helper methods.  This is a global functionality.  To access the functions in this class, use the global classname appended by the functionname.  You may have to load chrome://global/content/contentAreaUtils.js to disable certain security restrictions in Mozilla for the <open>, <save>, <saveAs> and <copy> function.

For example, the following code displays an error message

mxUtils.error('Browser is not supported!', 200, false);
Summary
mxUtilsA singleton class that provides cross-browser helper methods.
Variables
errorResourceSpecifies the resource key for the title of the error window.
closeResourceSpecifies the resource key for the label of the close button.
errorImageDefines the image used for error dialogs.
Functions
removeCursorsRemoves the cursors from the style of the given DOM node and its descendants.
getCurrentStyleReturns the current style of the specified element.
setPrefixedStyleAdds the given style with the standard name and an optional vendor prefix for the current browser.
hasScrollbarsReturns true if the overflow CSS property of the given node is either scroll or auto.
bindReturns a wrapper function that locks the execution scope of the given function to the specified scope.
evalEvaluates the given expression using eval and returns the JavaScript object that represents the expression result.
findNodeReturns the first node where attr equals value.
findNodeByAttributeReturns the first node where the given attribute matches the given value.
getFunctionNameReturns the name for the given function.
indexOfReturns the index of obj in array or -1 if the array does not contain the given object.
removeRemoves all occurrences of the given object in the given array or object.
isNodeReturns true if the given value is an XML node with the node name and if the optional attribute has the specified value.
isAncestorNodeReturns true if the given ancestor is an ancestor of the given DOM node in the DOM.
getChildNodesReturns an array of child nodes that are of the given node type.
importNodeCross browser implementation for document.importNode.
createXmlDocumentReturns a new, empty XML document.
parseXmlParses the specified XML string into a new XML document and returns the new document.
clearSelectionClears the current selection in the page.
getPrettyXMLReturns a pretty printed string that represents the XML tree for the given node.
removeWhitespaceRemoves the sibling text nodes for the given node that only consists of tabs, newlines and spaces.
htmlEntitiesReplaces characters (less than, greater than, newlines and quotes) with their HTML entities in the given string and returns the result.
isVmlReturns true if the given node is in the VML namespace.
getXmlReturns the XML content of the specified node.
getTextContentReturns the text content of the specified node.
setTextContentSets the text content of the specified node.
getInnerHtmlReturns the inner HTML for the given node as a string or an empty string if no node was specified.
getOuterHtmlReturns the outer HTML for the given node as a string or an empty string if no node was specified.
writeCreates a text node for the given string and appends it to the given parent.
writelnCreates a text node for the given string and appends it to the given parent with an additional linefeed.
brAppends a linebreak to the given parent and returns the linebreak.
buttonReturns a new button with the given level and function as an onclick event handler.
paraAppends a new paragraph with the given text to the specified parent and returns the paragraph.
addTransparentBackgroundFilterAdds a transparent background to the filter of the given node.
linkActionAdds a hyperlink to the specified parent that invokes action on the specified editor.
linkInvokeAdds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.
linkAdds a hyperlink to the specified parent and invokes the given function when the link is clicked.
fitMakes sure the given node is inside the visible area of the window.
loadLoads the specified URL synchronously and returns the mxXmlRequest.
getLoads the specified URL asynchronously and invokes the given functions depending on the request status.
postPosts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.
submitSubmits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.
loadIntoLoads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.
getValueReturns the value for the given key in the given associative array or the given default value if the value is null.
getNumberReturns the numeric value for the given key in the given associative array or the given default value (or 0) if the value is null.
getColorReturns the color value for the given key in the given associative array or the given default value if the value is null.
cloneRecursively clones the specified object ignoring all fieldnames in the given array of transient fields.
equalPointsCompares all mxPoints in the given lists.
equalEntriesReturns true if all entries of the given objects are equal.
isNaNReturns true if the given value is of type number and isNaN returns true.
extendAssigns a copy of the superclass prototype to the subclass prototype.
toStringReturns a textual representation of the specified object.
toRadiansConverts the given degree to radians.
arcToCurvesConverts the given arc to a series of curves.
getBoundingBoxReturns the bounding box for the rotated rectangle.
getRotatedPointRotates the given point by the given cos and sin.
reversePortConstraintsReverse the port constraint bitmask.
findNearestSegmentFinds the index of the nearest segment on the given cell state for the specified coordinate pair.
rectangleIntersectsSegmentReturns true if the given rectangle intersects the given segment.
containsReturns true if the specified point (x, y) is contained in the given rectangle.
intersectsReturns true if the two rectangles intersect.
intersectsReturns true if the two rectangles intersect.
getOffsetReturns the offset for the specified container as an mxPoint.
getDocumentScrollOriginReturns the scroll origin of the given document or the current document if no document is given.
getScrollOriginReturns the top, left corner of the viewrect as an mxPoint.
convertPointConverts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.
ltrimStrips all whitespaces from the beginning of the string.
rtrimStrips all whitespaces from the end of the string.
trimStrips all whitespaces from both end of the string.
isNumericReturns true if the specified value is numeric, that is, if it is not null, not an empty string, not a HEX number and isNaN returns false.
modReturns the remainder of division of n by m.
intersectionReturns the intersection of two lines as an mxPoint.
ptSeqDistSqReturns the square distance between a segment and a point.
relativeCcwReturns 1 if the given point on the right side of the segment, 0 if its on the segment, and -1 if the point is on the left side of the segment.
animateChangesSee mxEffects.animateChanges.
cascadeOpacitySee mxEffects.cascadeOpacity.
fadeOutSee mxEffects.fadeOut.
setOpacitySets the opacity of the specified DOM node to the given value in %.
createImageCreates and returns an image (IMG node) or VML image (v:image) in IE6 in quirks mode.
sortCellsSorts the given cells according to the order in the cell hierarchy.
getStylenameReturns the stylename in a style of the form [(stylename|key=value);] or an empty string if the given style does not contain a stylename.
getStylenamesReturns the stylenames in a style of the form [(stylename|key=value);] or an empty array if the given style does not contain any stylenames.
indexOfStylenameReturns the index of the given stylename in the given style.
addStylenameAdds the specified stylename to the given style if it does not already contain the stylename.
removeStylenameRemoves all occurrences of the specified stylename in the given style and returns the updated style.
removeAllStylenamesRemoves all stylenames from the given style and returns the updated style.
setCellStylesAssigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.
setStyleAdds or removes the given key, value pair to the style and returns the new style.
setCellStyleFlagsSets or toggles the flag bit for the given key in the cell’s styles.
setStyleFlagSets or removes the given key from the specified style and returns the new style.
getAlignmentAsPointReturns an mxPoint that represents the horizontal and vertical alignment for numeric computations.
getSizeForStringReturns an mxRectangle with the size (width and height in pixels) of the given string.
getViewXml
getScaleForPageCountReturns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.
showCopies the styles and the markup from the graph’s container into the given document and removes all cursor styles.
printScreenPrints the specified graph using a new window and the built-in print dialog.
popupShows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.
alertDisplayss the given alert in a new dialog.
promptDisplays the given message in a prompt dialog.
confirmDisplays the given message in a confirm dialog.
errorDisplays the given error message in a new mxWindow of the given width.
makeDraggableConfigures the given DOM element to act as a drag source for the specified graph.
+

mxUtils

A singleton class that provides cross-browser helper methods.  This is a global functionality.  To access the functions in this class, use the global classname appended by the functionname.  You may have to load chrome://global/content/contentAreaUtils.js to disable certain security restrictions in Mozilla for the <open>, <save>, <saveAs> and <copy> function.

For example, the following code displays an error message

mxUtils.error('Browser is not supported!', 200, false);
Summary
mxUtilsA singleton class that provides cross-browser helper methods.
Variables
errorResourceSpecifies the resource key for the title of the error window.
closeResourceSpecifies the resource key for the label of the close button.
errorImageDefines the image used for error dialogs.
Functions
removeCursorsRemoves the cursors from the style of the given DOM node and its descendants.
getCurrentStyleReturns the current style of the specified element.
setPrefixedStyleAdds the given style with the standard name and an optional vendor prefix for the current browser.
hasScrollbarsReturns true if the overflow CSS property of the given node is either scroll or auto.
bindReturns a wrapper function that locks the execution scope of the given function to the specified scope.
evalEvaluates the given expression using eval and returns the JavaScript object that represents the expression result.
findNodeReturns the first node where attr equals value.
findNodeByAttributeReturns the first node where the given attribute matches the given value.
getFunctionNameReturns the name for the given function.
indexOfReturns the index of obj in array or -1 if the array does not contain the given object.
removeRemoves all occurrences of the given object in the given array or object.
isNodeReturns true if the given value is an XML node with the node name and if the optional attribute has the specified value.
isAncestorNodeReturns true if the given ancestor is an ancestor of the given DOM node in the DOM.
getChildNodesReturns an array of child nodes that are of the given node type.
importNodeCross browser implementation for document.importNode.
createXmlDocumentReturns a new, empty XML document.
parseXmlParses the specified XML string into a new XML document and returns the new document.
clearSelectionClears the current selection in the page.
getPrettyXMLReturns a pretty printed string that represents the XML tree for the given node.
removeWhitespaceRemoves the sibling text nodes for the given node that only consists of tabs, newlines and spaces.
htmlEntitiesReplaces characters (less than, greater than, newlines and quotes) with their HTML entities in the given string and returns the result.
isVmlReturns true if the given node is in the VML namespace.
getXmlReturns the XML content of the specified node.
getTextContentReturns the text content of the specified node.
setTextContentSets the text content of the specified node.
getInnerHtmlReturns the inner HTML for the given node as a string or an empty string if no node was specified.
getOuterHtmlReturns the outer HTML for the given node as a string or an empty string if no node was specified.
writeCreates a text node for the given string and appends it to the given parent.
writelnCreates a text node for the given string and appends it to the given parent with an additional linefeed.
brAppends a linebreak to the given parent and returns the linebreak.
buttonReturns a new button with the given level and function as an onclick event handler.
paraAppends a new paragraph with the given text to the specified parent and returns the paragraph.
addTransparentBackgroundFilterAdds a transparent background to the filter of the given node.
linkActionAdds a hyperlink to the specified parent that invokes action on the specified editor.
linkInvokeAdds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.
linkAdds a hyperlink to the specified parent and invokes the given function when the link is clicked.
fitMakes sure the given node is inside the visible area of the window.
loadLoads the specified URL synchronously and returns the mxXmlRequest.
getLoads the specified URL asynchronously and invokes the given functions depending on the request status.
postPosts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.
submitSubmits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.
loadIntoLoads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.
getValueReturns the value for the given key in the given associative array or the given default value if the value is null.
getNumberReturns the numeric value for the given key in the given associative array or the given default value (or 0) if the value is null.
getColorReturns the color value for the given key in the given associative array or the given default value if the value is null.
cloneRecursively clones the specified object ignoring all fieldnames in the given array of transient fields.
equalPointsCompares all mxPoints in the given lists.
equalEntriesReturns true if all entries of the given objects are equal.
isNaNReturns true if the given value is of type number and isNaN returns true.
extendAssigns a copy of the superclass prototype to the subclass prototype.
toStringReturns a textual representation of the specified object.
toRadiansConverts the given degree to radians.
toDegreeConverts the given radians to degree.
arcToCurvesConverts the given arc to a series of curves.
getBoundingBoxReturns the bounding box for the rotated rectangle.
getRotatedPointRotates the given point by the given cos and sin.
reversePortConstraintsReverse the port constraint bitmask.
findNearestSegmentFinds the index of the nearest segment on the given cell state for the specified coordinate pair.
rectangleIntersectsSegmentReturns true if the given rectangle intersects the given segment.
containsReturns true if the specified point (x, y) is contained in the given rectangle.
intersectsReturns true if the two rectangles intersect.
intersectsReturns true if the two rectangles intersect.
getOffsetReturns the offset for the specified container as an mxPoint.
getDocumentScrollOriginReturns the scroll origin of the given document or the current document if no document is given.
getScrollOriginReturns the top, left corner of the viewrect as an mxPoint.
convertPointConverts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.
ltrimStrips all whitespaces from the beginning of the string.
rtrimStrips all whitespaces from the end of the string.
trimStrips all whitespaces from both end of the string.
isNumericReturns true if the specified value is numeric, that is, if it is not null, not an empty string, not a HEX number and isNaN returns false.
modReturns the remainder of division of n by m.
intersectionReturns the intersection of two lines as an mxPoint.
ptSeqDistSqReturns the square distance between a segment and a point.
relativeCcwReturns 1 if the given point on the right side of the segment, 0 if its on the segment, and -1 if the point is on the left side of the segment.
animateChangesSee mxEffects.animateChanges.
cascadeOpacitySee mxEffects.cascadeOpacity.
fadeOutSee mxEffects.fadeOut.
setOpacitySets the opacity of the specified DOM node to the given value in %.
createImageCreates and returns an image (IMG node) or VML image (v:image) in IE6 in quirks mode.
sortCellsSorts the given cells according to the order in the cell hierarchy.
getStylenameReturns the stylename in a style of the form [(stylename|key=value);] or an empty string if the given style does not contain a stylename.
getStylenamesReturns the stylenames in a style of the form [(stylename|key=value);] or an empty array if the given style does not contain any stylenames.
indexOfStylenameReturns the index of the given stylename in the given style.
addStylenameAdds the specified stylename to the given style if it does not already contain the stylename.
removeStylenameRemoves all occurrences of the specified stylename in the given style and returns the updated style.
removeAllStylenamesRemoves all stylenames from the given style and returns the updated style.
setCellStylesAssigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.
setStyleAdds or removes the given key, value pair to the style and returns the new style.
setCellStyleFlagsSets or toggles the flag bit for the given key in the cell’s styles.
setStyleFlagSets or removes the given key from the specified style and returns the new style.
getAlignmentAsPointReturns an mxPoint that represents the horizontal and vertical alignment for numeric computations.
getSizeForStringReturns an mxRectangle with the size (width and height in pixels) of the given string.
getViewXml
getScaleForPageCountReturns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.
showCopies the styles and the markup from the graph’s container into the given document and removes all cursor styles.
printScreenPrints the specified graph using a new window and the built-in print dialog.
popupShows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.
alertDisplayss the given alert in a new dialog.
promptDisplays the given message in a prompt dialog.
confirmDisplays the given message in a confirm dialog.
errorDisplays the given error message in a new mxWindow of the given width.
makeDraggableConfigures the given DOM element to act as a drag source for the specified graph.

Variables

@@ -49,7 +49,7 @@ if (browserType) {document.write("
");if (browserV

isAncestorNode

isAncestorNode: function(ancestor,
child)

Returns true if the given ancestor is an ancestor of the given DOM node in the DOM.  This also returns true if the child is the ancestor.

Parameters

ancestorDOM node that represents the ancestor.
childDOM node that represents the child.
-

getChildNodes

getChildNodes: function(node,
nodeType)

Returns an array of child nodes that are of the given node type.

Parameters

nodeParent DOM node to return the children from.
nodeTypeOptional node type to return.  Default is mxConstants.NODETYPE_ELEMENT.
+

getChildNodes

getChildNodes: function(node,
nodeType)

Returns an array of child nodes that are of the given node type.

Parameters

nodeParent DOM node to return the children from.
nodeTypeOptional node type to return.  Default is mxConstants.NODETYPE_ELEMENT.

importNode

importNode: function(doc,
node,
allChildren)

Cross browser implementation for document.importNode.  Uses document.importNode in all browsers but IE, where the node is cloned by creating a new node and copying all attributes and children into it using importNode, recursively.

Parameters

docDocument to import the node into.
nodeNode to be imported.
allChildrenIf all children should be imported.
@@ -64,7 +64,7 @@ if (browserType) {document.write("
");if (browserV

clearSelection

clearSelection: function()

Clears the current selection in the page.

-

getPrettyXML

Returns a pretty printed string that represents the XML tree for the given node.  This method should only be used to print XML for reading, use getXml instead to obtain a string for processing.

Parameters

nodeDOM node to return the XML for.
tabOptional string that specifies the indentation for one level.  Default is two spaces.
indentOptional string that represents the current indentation.  Default is an empty string.
+

getPrettyXML

Returns a pretty printed string that represents the XML tree for the given node.  This method should only be used to print XML for reading, use getXml instead to obtain a string for processing.

Parameters

nodeDOM node to return the XML for.
tabOptional string that specifies the indentation for one level.  Default is two spaces.
indentOptional string that represents the current indentation.  Default is an empty string.

removeWhitespace

removeWhitespace: function(node,
before)

Removes the sibling text nodes for the given node that only consists of tabs, newlines and spaces.

Parameters

nodeDOM node whose siblings should be removed.
beforeOptional boolean that specifies the direction of the traversal.
@@ -97,15 +97,15 @@ if (browserType) {document.write("
");if (browserV

addTransparentBackgroundFilter

addTransparentBackgroundFilter: function(node)

Adds a transparent background to the filter of the given node.  This background can be used in IE8 standards mode (native IE8 only) to pass events through the node.

-

linkAction

linkAction: function(parent,
text,
editor,
action,
pad)

Adds a hyperlink to the specified parent that invokes action on the specified editor.

Parameters

parentDOM node to contain the new link.
textString that is used as the link label.
editormxEditor that will execute the action.
actionString that defines the name of the action to be executed.
padOptional left-padding for the link.  Default is 0.
+

linkAction

linkAction: function(parent,
text,
editor,
action,
pad)

Adds a hyperlink to the specified parent that invokes action on the specified editor.

Parameters

parentDOM node to contain the new link.
textString that is used as the link label.
editormxEditor that will execute the action.
actionString that defines the name of the action to be executed.
padOptional left-padding for the link.  Default is 0.
-

linkInvoke

linkInvoke: function(parent,
text,
editor,
functName,
arg,
pad)

Adds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.  The function name is the name of a function of the editor instance, not an action name.

Parameters

parentDOM node to contain the new link.
textString that is used as the link label.
editormxEditor instance to execute the function on.
functNameString that represents the name of the function.
argObject that represents the argument to the function.
padOptional left-padding for the link.  Default is 0.
+

linkInvoke

linkInvoke: function(parent,
text,
editor,
functName,
arg,
pad)

Adds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.  The function name is the name of a function of the editor instance, not an action name.

Parameters

parentDOM node to contain the new link.
textString that is used as the link label.
editormxEditor instance to execute the function on.
functNameString that represents the name of the function.
argObject that represents the argument to the function.
padOptional left-padding for the link.  Default is 0.

link

link: function(parent,
text,
funct,
pad)

Adds a hyperlink to the specified parent and invokes the given function when the link is clicked.

Parameters

parentDOM node to contain the new link.
textString that is used as the link label.
functFunction to execute when the link is clicked.
padOptional left-padding for the link.  Default is 0.

fit

fit: function(node)

Makes sure the given node is inside the visible area of the window.  This is done by setting the left and top in the style.

-

load

load: function(url)

Loads the specified URL synchronously and returns the mxXmlRequest.  Throws an exception if the file cannot be loaded.  See mxUtils.get for an asynchronous implementation.

Example

try
+

load

load: function(url)

Loads the specified URL synchronously and returns the mxXmlRequest.  Throws an exception if the file cannot be loaded.  See mxUtils.get for an asynchronous implementation.

Example

try
 {
   var req = mxUtils.load(filename);
   var root = req.getDocumentElement();
@@ -116,7 +116,7 @@ catch (ex)
   mxUtils.alert('Cannot load '+filename+': '+ex);
 }

Parameters

urlURL to get the data from.
-

get

get: function(url,
onload,
onerror)

Loads the specified URL asynchronously and invokes the given functions depending on the request status.  Returns the mxXmlRequest in use.  Both functions take the mxXmlRequest as the only parameter.  See mxUtils.load for a synchronous implementation.

Example

mxUtils.get(url, function(req)
+

get

get: function(url,
onload,
onerror)

Loads the specified URL asynchronously and invokes the given functions depending on the request status.  Returns the mxXmlRequest in use.  Both functions take the mxXmlRequest as the only parameter.  See mxUtils.load for a synchronous implementation.

Example

mxUtils.get(url, function(req)
 {
    var node = req.getDocumentElement();
    // Process XML DOM...
@@ -127,27 +127,27 @@ catch (ex)
   dec.decode(node, graph.getModel());
 });

Parameters

urlURL to get the data from.
onloadOptional function to execute for a successful response.
onerrorOptional function to execute on error.
-

post

post: function(url,
params,
onload,
onerror)

Posts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.  Returns the mxXmlRequest in use.  Both functions take the mxXmlRequest as the only parameter.  Make sure to use encodeURIComponent for the parameter values.

Example

mxUtils.post(url, 'key=value', function(req)
+

post

post: function(url,
params,
onload,
onerror)

Posts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.  Returns the mxXmlRequest in use.  Both functions take the mxXmlRequest as the only parameter.  Make sure to use encodeURIComponent for the parameter values.

Example

mxUtils.post(url, 'key=value', function(req)
 {
  mxUtils.alert('Ready: '+req.isReady()+' Status: '+req.getStatus());
  // Process req.getDocumentElement() using DOM API if OK...
 });

Parameters

urlURL to get the data from.
paramsParameters for the post request.
onloadOptional function to execute for a successful response.
onerrorOptional function to execute on error.
-

submit

submit: function(url,
params,
doc,
target)

Submits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.  Make sure to use encodeURIComponent for the parameter values.

Parameters

urlURL to get the data from.
paramsParameters for the form.
docDocument to create the form in.
targetTarget to send the form result to.
+

submit

submit: function(url,
params,
doc,
target)

Submits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.  Make sure to use encodeURIComponent for the parameter values.

Parameters

urlURL to get the data from.
paramsParameters for the form.
docDocument to create the form in.
targetTarget to send the form result to.
-

loadInto

loadInto: function(url,
doc,
onload)

Loads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.  This implementation does not use mxXmlRequest, but the document.load method.

Parameters

urlURL to get the data from.
docThe document to load the URL into.
onloadFunction to execute when the URL has been loaded.
+

loadInto

loadInto: function(url,
doc,
onload)

Loads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.  This implementation does not use mxXmlRequest, but the document.load method.

Parameters

urlURL to get the data from.
docThe document to load the URL into.
onloadFunction to execute when the URL has been loaded.

getValue

getValue: function(array,
key,
defaultValue)

Returns the value for the given key in the given associative array or the given default value if the value is null.

Parameters

arrayAssociative array that contains the value for the key.
keyKey whose value should be returned.
defaultValueValue to be returned if the value for the given key is null.

getNumber

getNumber: function(array,
key,
defaultValue)

Returns the numeric value for the given key in the given associative array or the given default value (or 0) if the value is null.  The value is converted to a numeric value using the Number function.

Parameters

arrayAssociative array that contains the value for the key.
keyKey whose value should be returned.
defaultValueValue to be returned if the value for the given key is null.  Default is 0.
-

getColor

getColor: function(array,
key,
defaultValue)

Returns the color value for the given key in the given associative array or the given default value if the value is null.  If the value is mxConstants.NONE then null is returned.

Parameters

arrayAssociative array that contains the value for the key.
keyKey whose value should be returned.
defaultValueValue to be returned if the value for the given key is null.  Default is null.
+

getColor

getColor: function(array,
key,
defaultValue)

Returns the color value for the given key in the given associative array or the given default value if the value is null.  If the value is mxConstants.NONE then null is returned.

Parameters

arrayAssociative array that contains the value for the key.
keyKey whose value should be returned.
defaultValueValue to be returned if the value for the given key is null.  Default is null.
-

clone

clone: function(obj,
transients,
shallow)

Recursively clones the specified object ignoring all fieldnames in the given array of transient fields.  mxObjectIdentity.FIELD_NAME is always ignored by this function.

Parameters

objObject to be cloned.
transientsOptional array of strings representing the fieldname to be ignored.
shallowOptional boolean argument to specify if a shallow clone should be created, that is, one where all object references are not cloned or, in other words, one where only atomic (strings, numbers) values are cloned.  Default is false.
+

clone

clone: function(obj,
transients,
shallow)

Recursively clones the specified object ignoring all fieldnames in the given array of transient fields.  mxObjectIdentity.FIELD_NAME is always ignored by this function.

Parameters

objObject to be cloned.
transientsOptional array of strings representing the fieldname to be ignored.
shallowOptional boolean argument to specify if a shallow clone should be created, that is, one where all object references are not cloned or, in other words, one where only atomic (strings, numbers) values are cloned.  Default is false.
-

equalPoints

equalPoints: function(a,
b)

Compares all mxPoints in the given lists.

Parameters

aArray of mxPoints to be compared.
bArray of mxPoints to be compared.
+

equalPoints

equalPoints: function(a,
b)

Compares all mxPoints in the given lists.

Parameters

aArray of mxPoints to be compared.
bArray of mxPoints to be compared.
-

equalEntries

equalEntries: function(a,
b)

Returns true if all entries of the given objects are equal.  Values with with Number.NaN are equal to Number.NaN and unequal to any other value.

Parameters

amxRectangle to be compared.
bmxRectangle to be compared.
+

equalEntries

equalEntries: function(a,
b)

Returns true if all entries of the given objects are equal.  Values with with Number.NaN are equal to Number.NaN and unequal to any other value.

Parameters

amxRectangle to be compared.
bmxRectangle to be compared.

isNaN

isNaN: function(value)

Returns true if the given value is of type number and isNaN returns true.

@@ -162,9 +162,11 @@ mxUtils.extend(MyGraph, mxGraph);

Parameter

toRadians

toRadians: function(deg)

Converts the given degree to radians.

+

toDegree

toDegree: function(rad)

Converts the given radians to degree.

+

arcToCurves

arcToCurves: function(x0,
y0,
r1,
r2,
angle,
largeArcFlag,
sweepFlag,
x,
y)

Converts the given arc to a series of curves.

-

getBoundingBox

getBoundingBox: function(rect,
rotation,
cx)

Returns the bounding box for the rotated rectangle.

Parameters

rectmxRectangle to be rotated.
angleNumber that represents the angle (in degrees).
cxOptional mxPoint that represents the rotation center.  If no rotation center is given then the center of rect is used.
+

getBoundingBox

getBoundingBox: function(rect,
rotation,
cx)

Returns the bounding box for the rotated rectangle.

Parameters

rectmxRectangle to be rotated.
angleNumber that represents the angle (in degrees).
cxOptional mxPoint that represents the rotation center.  If no rotation center is given then the center of rect is used.

getRotatedPoint

getRotatedPoint: function(pt,
cos,
sin,
c)

Rotates the given point by the given cos and sin.

@@ -172,21 +174,21 @@ mxUtils.extend(MyGraph, mxGraph);

Parameter

findNearestSegment

findNearestSegment: function(state,
x,
y)

Finds the index of the nearest segment on the given cell state for the specified coordinate pair.

-

rectangleIntersectsSegment

rectangleIntersectsSegment: function(bounds,
p1,
p2)

Returns true if the given rectangle intersects the given segment.

Parameters

boundsmxRectangle that represents the rectangle.
p1mxPoint that represents the first point of the segment.
p2mxPoint that represents the second point of the segment.
+

rectangleIntersectsSegment

rectangleIntersectsSegment: function(bounds,
p1,
p2)

Returns true if the given rectangle intersects the given segment.

Parameters

boundsmxRectangle that represents the rectangle.
p1mxPoint that represents the first point of the segment.
p2mxPoint that represents the second point of the segment.
-

contains

contains: function(bounds,
x,
y)

Returns true if the specified point (x, y) is contained in the given rectangle.

Parameters

boundsmxRectangle that represents the area.
xX-coordinate of the point.
yY-coordinate of the point.
+

contains

contains: function(bounds,
x,
y)

Returns true if the specified point (x, y) is contained in the given rectangle.

Parameters

boundsmxRectangle that represents the area.
xX-coordinate of the point.
yY-coordinate of the point.
-

intersects

intersects: function(a,
b)

Returns true if the two rectangles intersect.

Parameters

amxRectangle to be checked for intersection.
bmxRectangle to be checked for intersection.
+

intersects

intersects: function(a,
b)

Returns true if the two rectangles intersect.

Parameters

amxRectangle to be checked for intersection.
bmxRectangle to be checked for intersection.
-

intersects

intersectsHotspot: function(state,
x,
y,
hotspot,
min,
max)

Returns true if the two rectangles intersect.

Parameters

amxRectangle to be checked for intersection.
bmxRectangle to be checked for intersection.
+

intersects

intersectsHotspot: function(state,
x,
y,
hotspot,
min,
max)

Returns true if the two rectangles intersect.

Parameters

amxRectangle to be checked for intersection.
bmxRectangle to be checked for intersection.
-

getOffset

getOffset: function(container,
scrollOffset)

Returns the offset for the specified container as an mxPoint.  The offset is the distance from the top left corner of the container to the top left corner of the document.

Parameters

containerDOM node to return the offset for.
scollOffsetOptional boolean to add the scroll offset of the document.  Default is false.
+

getOffset

getOffset: function(container,
scrollOffset)

Returns the offset for the specified container as an mxPoint.  The offset is the distance from the top left corner of the container to the top left corner of the document.

Parameters

containerDOM node to return the offset for.
scollOffsetOptional boolean to add the scroll offset of the document.  Default is false.

getDocumentScrollOrigin

getDocumentScrollOrigin: function(doc)

Returns the scroll origin of the given document or the current document if no document is given.

-

getScrollOrigin

getScrollOrigin: function(node)

Returns the top, left corner of the viewrect as an mxPoint.

+

getScrollOrigin

getScrollOrigin: function(node)

Returns the top, left corner of the viewrect as an mxPoint.

-

convertPoint

convertPoint: function(container,
x,
y)

Converts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.

var pt = mxUtils.convertPoint(graph.container,
+

convertPoint

convertPoint: function(container,
x,
y)

Converts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.

var pt = mxUtils.convertPoint(graph.container,
   mxEvent.getClientX(evt), mxEvent.getClientY(evt));

Parameters

containerDOM node to use for the offset.
xX-coordinate of the point to be converted.
yY-coordinate of the point to be converted.

ltrim

ltrim: function(str,
chars)

Strips all whitespaces from the beginning of the string.  Without the second parameter, Javascript function will trim these characters:

  • ” “ (ASCII 32 (0x20)), an ordinary space
  • ”\t” (ASCII 9 (0x09)), a tab
  • ”\n” (ASCII 10 (0x0A)), a new line (line feed)
  • ”\r” (ASCII 13 (0x0D)), a carriage return
  • ”\0” (ASCII 0 (0x00)), the NUL-byte
  • ”\x0B” (ASCII 11 (0x0B)), a vertical tab
@@ -199,17 +201,17 @@ mxUtils.extend(MyGraph, mxGraph);

Parameter

mod

mod: function(n,
m)

Returns the remainder of division of n by m.  You should use this instead of the built-in operation as the built-in operation does not properly handle negative numbers.

-

intersection

intersection: function (x0,
y0,
x1,
y1,
x2,
y2,
x3,
y3)

Returns the intersection of two lines as an mxPoint.

Parameters

x0X-coordinate of the first line’s startpoint.
y0X-coordinate of the first line’s startpoint.
x1X-coordinate of the first line’s endpoint.
y1Y-coordinate of the first line’s endpoint.
x2X-coordinate of the second line’s startpoint.
y2Y-coordinate of the second line’s startpoint.
x3X-coordinate of the second line’s endpoint.
y3Y-coordinate of the second line’s endpoint.
+

intersection

intersection: function (x0,
y0,
x1,
y1,
x2,
y2,
x3,
y3)

Returns the intersection of two lines as an mxPoint.

Parameters

x0X-coordinate of the first line’s startpoint.
y0X-coordinate of the first line’s startpoint.
x1X-coordinate of the first line’s endpoint.
y1Y-coordinate of the first line’s endpoint.
x2X-coordinate of the second line’s startpoint.
y2Y-coordinate of the second line’s startpoint.
x3X-coordinate of the second line’s endpoint.
y3Y-coordinate of the second line’s endpoint.

ptSeqDistSq

Returns the square distance between a segment and a point.

Parameters

x1X-coordinate of the startpoint of the segment.
y1Y-coordinate of the startpoint of the segment.
x2X-coordinate of the endpoint of the segment.
y2Y-coordinate of the endpoint of the segment.
pxX-coordinate of the point.
pyY-coordinate of the point.

relativeCcw

relativeCcw: function(x1,
y1,
x2,
y2,
px,
py)

Returns 1 if the given point on the right side of the segment, 0 if its on the segment, and -1 if the point is on the left side of the segment.

Parameters

x1X-coordinate of the startpoint of the segment.
y1Y-coordinate of the startpoint of the segment.
x2X-coordinate of the endpoint of the segment.
y2Y-coordinate of the endpoint of the segment.
pxX-coordinate of the point.
pyY-coordinate of the point.
-

animateChanges

animateChanges: function(graph,
changes)

See mxEffects.animateChanges.  This is for backwards compatibility and will be removed later.

+

animateChanges

animateChanges: function(graph,
changes)

See mxEffects.animateChanges.  This is for backwards compatibility and will be removed later.

-

cascadeOpacity

cascadeOpacity: function(graph,
cell,
opacity)

See mxEffects.cascadeOpacity.  This is for backwards compatibility and will be removed later.

+

cascadeOpacity

cascadeOpacity: function(graph,
cell,
opacity)

See mxEffects.cascadeOpacity.  This is for backwards compatibility and will be removed later.

-

fadeOut

fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)

See mxEffects.fadeOut.  This is for backwards compatibility and will be removed later.

+

fadeOut

fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)

See mxEffects.fadeOut.  This is for backwards compatibility and will be removed later.

setOpacity

setOpacity: function(node,
value)

Sets the opacity of the specified DOM node to the given value in %.

Parameters

nodeDOM node to set the opacity for.
valueOpacity in %.  Possible values are between 0 and 100.
@@ -229,7 +231,7 @@ mxUtils.extend(MyGraph, mxGraph);

Parameter

removeAllStylenames

removeAllStylenames: function(style)

Removes all stylenames from the given style and returns the updated style.

-

setCellStyles

setCellStyles: function(model,
cells,
key,
value)

Assigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.

Parameters

modelmxGraphModel to execute the transaction in.
cellsArray of mxCells to be updated.
keyKey of the style to be changed.
valueNew value for the given key.
+

setCellStyles

setCellStyles: function(model,
cells,
key,
value)

Assigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.

Parameters

modelmxGraphModel to execute the transaction in.
cellsArray of mxCells to be updated.
keyKey of the style to be changed.
valueNew value for the given key.

setStyle

setStyle: function(style,
key,
value)

Adds or removes the given key, value pair to the style and returns the new style.  If value is null or zero length then the key is removed from the style.  This is for cell styles, not for CSS styles.

Parameters

styleString of the form [(stylename|key=value);].
keyKey of the style to be changed.
valueNew value for the given key.
@@ -237,24 +239,24 @@ mxUtils.extend(MyGraph, mxGraph);

Parameter mxUtils.setCellStyleFlags(graph.model, cells, mxConstants.STYLE_FONTSTYLE, - mxConstants.FONT_BOLD);

Toggles the bold font style.

Parameters

modelmxGraphModel that contains the cells.
cellsArray of mxCells to change the style for.
keyKey of the style to be changed.
flagInteger for the bit to be changed.
valueOptional boolean value for the flag.
+ mxConstants.FONT_BOLD);

Toggles the bold font style.

Parameters

modelmxGraphModel that contains the cells.
cellsArray of mxCells to change the style for.
keyKey of the style to be changed.
flagInteger for the bit to be changed.
valueOptional boolean value for the flag.

setStyleFlag

setStyleFlag: function(style,
key,
flag,
value)

Sets or removes the given key from the specified style and returns the new style.  If value is null then the flag is toggled.

Parameters

styleString of the form [(stylename|key=value);].
keyKey of the style to be changed.
flagInteger for the bit to be changed.
valueOptional boolean value for the given flag.
-

getAlignmentAsPoint

getAlignmentAsPoint: function(align,
valign)

Returns an mxPoint that represents the horizontal and vertical alignment for numeric computations.  X is -0.5 for center, -1 for right and 0 for left alignment.  Y is -0.5 for middle, -1 for bottom and 0 for top alignment.  Default values for missing arguments is top, left.

+

getAlignmentAsPoint

getAlignmentAsPoint: function(align,
valign)

Returns an mxPoint that represents the horizontal and vertical alignment for numeric computations.  X is -0.5 for center, -1 for right and 0 for left alignment.  Y is -0.5 for middle, -1 for bottom and 0 for top alignment.  Default values for missing arguments is top, left.

-

getSizeForString

getSizeForString: function(text,
fontSize,
fontFamily,
textWidth)

Returns an mxRectangle with the size (width and height in pixels) of the given string.  The string may contain HTML markup.  Newlines should be converted to br before calling this method.  The caller is responsible for sanitizing the HTML markup.

Example

var label = graph.getLabel(cell).replace(/\n/g, "<br>");
-var size = graph.getSizeForString(label);

Parameters

textString whose size should be returned.
fontSizeInteger that specifies the font size in pixels.  Default is mxConstants.DEFAULT_FONTSIZE.
fontFamilyString that specifies the name of the font family.  Default is mxConstants.DEFAULT_FONTFAMILY.
textWidthOptional width for text wrapping.
+

getSizeForString

getSizeForString: function(text,
fontSize,
fontFamily,
textWidth)

Returns an mxRectangle with the size (width and height in pixels) of the given string.  The string may contain HTML markup.  Newlines should be converted to br before calling this method.  The caller is responsible for sanitizing the HTML markup.

Example

var label = graph.getLabel(cell).replace(/\n/g, "<br>");
+var size = graph.getSizeForString(label);

Parameters

textString whose size should be returned.
fontSizeInteger that specifies the font size in pixels.  Default is mxConstants.DEFAULT_FONTSIZE.
fontFamilyString that specifies the name of the font family.  Default is mxConstants.DEFAULT_FONTFAMILY.
textWidthOptional width for text wrapping.

getViewXml

getViewXml: function(graph,
scale,
cells,
x0,
y0)
-

getScaleForPageCount

getScaleForPageCount: function(pageCount,
graph,
pageFormat,
border)

Returns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.  The scale is always computed such that it given the given amount or fewer pages in the print output.  See mxPrintPreview for an example.

Parameters

pageCountSpecifies the number of pages in the print output.
graphmxGraph that should be printed.
pageFormatOptional mxRectangle that specifies the page format.  Default is mxConstants.PAGE_FORMAT_A4_PORTRAIT.
borderThe border along each side of every page.
+

getScaleForPageCount

getScaleForPageCount: function(pageCount,
graph,
pageFormat,
border)

Returns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.  The scale is always computed such that it given the given amount or fewer pages in the print output.  See mxPrintPreview for an example.

Parameters

pageCountSpecifies the number of pages in the print output.
graphmxGraph that should be printed.
pageFormatOptional mxRectangle that specifies the page format.  Default is mxConstants.PAGE_FORMAT_A4_PORTRAIT.
borderThe border along each side of every page.
-

show

show: function(graph,
doc,
x0,
y0,
w,
h)

Copies the styles and the markup from the graph’s container into the given document and removes all cursor styles.  The document is returned.

This function should be called from within the document with the graph.  If you experience problems with missing stylesheets in IE then try adding the domain to the trusted sites.

Parameters

graphmxGraph to be copied.
docDocument where the new graph is created.
x0X-coordinate of the graph view origin.  Default is 0.
y0Y-coordinate of the graph view origin.  Default is 0.
wOptional width of the graph view.
hOptional height of the graph view.
+

show

show: function(graph,
doc,
x0,
y0,
w,
h)

Copies the styles and the markup from the graph’s container into the given document and removes all cursor styles.  The document is returned.

This function should be called from within the document with the graph.  If you experience problems with missing stylesheets in IE then try adding the domain to the trusted sites.

Parameters

graphmxGraph to be copied.
docDocument where the new graph is created.
x0X-coordinate of the graph view origin.  Default is 0.
y0Y-coordinate of the graph view origin.  Default is 0.
wOptional width of the graph view.
hOptional height of the graph view.
-

printScreen

printScreen: function(graph)

Prints the specified graph using a new window and the built-in print dialog.

This function should be called from within the document with the graph.

Parameters

graphmxGraph to be printed.
+

printScreen

printScreen: function(graph)

Prints the specified graph using a new window and the built-in print dialog.

This function should be called from within the document with the graph.

Parameters

graphmxGraph to be printed.
-

popup

popup: function(content,
isInternalWindow)

Shows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.

Parameters

contentString that specifies the text to be displayed.
isInternalWindowOptional boolean indicating if an mxWindow should be used instead of a new browser window.  Default is false.
+

popup

popup: function(content,
isInternalWindow)

Shows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.

Parameters

contentString that specifies the text to be displayed.
isInternalWindowOptional boolean indicating if an mxWindow should be used instead of a new browser window.  Default is false.

alert

alert: function(message)

Displayss the given alert in a new dialog.  This implementation uses the built-in alert function.  This is used to display validation errors when connections cannot be changed or created.

Parameters

messageString specifying the message to be displayed.
@@ -262,9 +264,9 @@ var size = graph.getSizeForString(label);

P

confirm

confirm: function(message)

Displays the given message in a confirm dialog.  This implementation uses the built-in confirm function.

Parameters

messageString specifying the message to be displayed.
-

error

error: function(message,
width,
close,
icon)

Displays the given error message in a new mxWindow of the given width.  If close is true then an additional close button is added to the window.  The optional icon specifies the icon to be used for the window.  Default is mxUtils.errorImage.

Parameters

messageString specifying the message to be displayed.
widthInteger specifying the width of the window.
closeOptional boolean indicating whether to add a close button.
iconOptional icon for the window decoration.
+

error

error: function(message,
width,
close,
icon)

Displays the given error message in a new mxWindow of the given width.  If close is true then an additional close button is added to the window.  The optional icon specifies the icon to be used for the window.  Default is mxUtils.errorImage.

Parameters

messageString specifying the message to be displayed.
widthInteger specifying the width of the window.
closeOptional boolean indicating whether to add a close button.
iconOptional icon for the window decoration.
-

makeDraggable

makeDraggable: function(element,
graphF,
funct,
dragElement,
dx,
dy,
autoscroll,
scalePreview,
highlightDropTargets,
getDropTarget)

Configures the given DOM element to act as a drag source for the specified graph.  Returns a a new mxDragSource.  If <mxDragSource.guideEnabled> is enabled then the x and y arguments must be used in funct to match the preview location.

Example

var funct = function(graph, evt, cell, x, y)
+

makeDraggable

makeDraggable: function(element,
graphF,
funct,
dragElement,
dx,
dy,
autoscroll,
scalePreview,
highlightDropTargets,
getDropTarget)

Configures the given DOM element to act as a drag source for the specified graph.  Returns a a new mxDragSource.  If <mxDragSource.guideEnabled> is enabled then the x and y arguments must be used in funct to match the preview location.

Example

var funct = function(graph, evt, cell, x, y)
 {
   if (graph.canImportCell(cell))
   {
@@ -297,7 +299,7 @@ var dragImage = img.cloneNode(true);
 dragImage.style.width = '32px';
 dragImage.style.height = '32px';
 mxUtils.makeDraggable(img, graph, funct, dragImage);
-document.body.appendChild(img);

Parameters

elementDOM element to make draggable.
graphFmxGraph that acts as the drop target or a function that takes a mouse event and returns the current mxGraph.
functFunction to execute on a successful drop.
dragElementOptional DOM node to be used for the drag preview.
dxOptional horizontal offset between the cursor and the drag preview.
dyOptional vertical offset between the cursor and the drag preview.
autoscrollOptional boolean that specifies if autoscroll should be used.  Default is mxGraph.autoscroll.
scalePreviewOptional boolean that specifies if the preview element should be scaled according to the graph scale.  If this is true, then the offsets will also be scaled.  Default is false.
highlightDropTargetsOptional boolean that specifies if dropTargets should be highlighted.  Default is true.
getDropTargetOptional function to return the drop target for a given location (x, y).  Default is mxGraph.getCellAt.
+document.body.appendChild(img);

Parameters

elementDOM element to make draggable.
graphFmxGraph that acts as the drop target or a function that takes a mouse event and returns the current mxGraph.
functFunction to execute on a successful drop.
dragElementOptional DOM node to be used for the drag preview.
dxOptional horizontal offset between the cursor and the drag preview.
dyOptional vertical offset between the cursor and the drag preview.
autoscrollOptional boolean that specifies if autoscroll should be used.  Default is mxGraph.autoscroll.
scalePreviewOptional boolean that specifies if the preview element should be scaled according to the graph scale.  If this is true, then the offsets will also be scaled.  Default is false.
highlightDropTargetsOptional boolean that specifies if dropTargets should be highlighted.  Default is true.
getDropTargetOptional function to return the drop target for a given location (x, y).  Default is mxGraph.getCellAt.

@@ -305,7 +307,7 @@ document.body.appendChild(img);

Parameters< - @@ -313,7 +315,7 @@ HideAllBut([10], 13);// -->

-
removeCursors: function(element)
Removes the cursors from the style of the given DOM node and its descendants.
getCurrentStyle: function()
Returns the current style of the specified element.
setPrefixedStyle: function()
Adds the given style with the standard name and an optional vendor prefix for the current browser.
hasScrollbars: function(node)
Returns true if the overflow CSS property of the given node is either scroll or auto.
bind: function(scope,
funct)
Returns a wrapper function that locks the execution scope of the given function to the specified scope.
eval: function(expr)
Evaluates the given expression using eval and returns the JavaScript object that represents the expression result.
findNode: function(node,
attr,
value)
Returns the first node where attr equals value.
findNodeByAttribute: function()
Returns the first node where the given attribute matches the given value.
getFunctionName: function(f)
Returns the name for the given function.
indexOf: function(array,
obj)
Returns the index of obj in array or -1 if the array does not contain the given object.
remove: function(obj,
array)
Removes all occurrences of the given object in the given array or object.
isNode: function(value,
nodeName,
attributeName,
attributeValue)
Returns true if the given value is an XML node with the node name and if the optional attribute has the specified value.
isAncestorNode: function(ancestor,
child)
Returns true if the given ancestor is an ancestor of the given DOM node in the DOM.
getChildNodes: function(node,
nodeType)
Returns an array of child nodes that are of the given node type.
importNode: function(doc,
node,
allChildren)
Cross browser implementation for document.importNode.
createXmlDocument: function()
Returns a new, empty XML document.
parseXml: function()
Parses the specified XML string into a new XML document and returns the new document.
clearSelection: function()
Clears the current selection in the page.
removeWhitespace: function(node,
before)
Removes the sibling text nodes for the given node that only consists of tabs, newlines and spaces.
htmlEntities: function(s,
newline)
Replaces characters (less than, greater than, newlines and quotes) with their HTML entities in the given string and returns the result.
isVml: function(node)
Returns true if the given node is in the VML namespace.
getXml: function(node,
linefeed)
Returns the XML content of the specified node.
getTextContent: function(node)
Returns the text content of the specified node.
setTextContent: function(node,
text)
Sets the text content of the specified node.
getInnerHtml: function()
Returns the inner HTML for the given node as a string or an empty string if no node was specified.
getOuterHtml: function()
Returns the outer HTML for the given node as a string or an empty string if no node was specified.
write: function(parent,
text)
Creates a text node for the given string and appends it to the given parent.
writeln: function(parent,
text)
Creates a text node for the given string and appends it to the given parent with an additional linefeed.
br: function(parent,
count)
Appends a linebreak to the given parent and returns the linebreak.
button: function(label,
funct,
doc)
Returns a new button with the given level and function as an onclick event handler.
para: function(parent,
text)
Appends a new paragraph with the given text to the specified parent and returns the paragraph.
addTransparentBackgroundFilter: function(node)
Adds a transparent background to the filter of the given node.
linkAction: function(parent,
text,
editor,
action,
pad)
Adds a hyperlink to the specified parent that invokes action on the specified editor.
linkInvoke: function(parent,
text,
editor,
functName,
arg,
pad)
Adds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.
link: function(parent,
text,
funct,
pad)
Adds a hyperlink to the specified parent and invokes the given function when the link is clicked.
fit: function(node)
Makes sure the given node is inside the visible area of the window.
load: function(url)
Loads the specified URL synchronously and returns the mxXmlRequest.
XML HTTP request wrapper.
get: function(url,
onload,
onerror)
Loads the specified URL asynchronously and invokes the given functions depending on the request status.
post: function(url,
params,
onload,
onerror)
Posts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.
submit: function(url,
params,
doc,
target)
Submits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.
mxXmlRequest.prototype.simulate = function(doc,
target)
Creates and posts a request to the given target URL using a dynamically created form inside the given document.
loadInto: function(url,
doc,
onload)
Loads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.
getValue: function(array,
key,
defaultValue)
Returns the value for the given key in the given associative array or the given default value if the value is null.
getNumber: function(array,
key,
defaultValue)
Returns the numeric value for the given key in the given associative array or the given default value (or 0) if the value is null.
getColor: function(array,
key,
defaultValue)
Returns the color value for the given key in the given associative array or the given default value if the value is null.
clone: function(obj,
transients,
shallow)
Recursively clones the specified object ignoring all fieldnames in the given array of transient fields.
equalPoints: function(a,
b)
Compares all mxPoints in the given lists.
equalEntries: function(a,
b)
Returns true if all entries of the given objects are equal.
isNaN: function(value)
Returns true if the given value is of type number and isNaN returns true.
extend: function(ctor,
superCtor)
Assigns a copy of the superclass prototype to the subclass prototype.
toString: function(obj)
Returns a textual representation of the specified object.
toRadians: function(deg)
Converts the given degree to radians.
arcToCurves: function(x0,
y0,
r1,
r2,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Converts the given arc to a series of curves.
getBoundingBox: function(rect,
rotation,
cx)
Returns the bounding box for the rotated rectangle.
getRotatedPoint: function(pt,
cos,
sin,
c)
Rotates the given point by the given cos and sin.
reversePortConstraints: function(constraint)
Reverse the port constraint bitmask.
findNearestSegment: function(state,
x,
y)
Finds the index of the nearest segment on the given cell state for the specified coordinate pair.
rectangleIntersectsSegment: function(bounds,
p1,
p2)
Returns true if the given rectangle intersects the given segment.
contains: function(bounds,
x,
y)
Returns true if the specified point (x, y) is contained in the given rectangle.
intersects: function(a,
b)
Returns true if the two rectangles intersect.
getOffset: function(container,
scrollOffset)
Returns the offset for the specified container as an mxPoint.
Implements a 2-dimensional vector with double precision coordinates.
getDocumentScrollOrigin: function(doc)
Returns the scroll origin of the given document or the current document if no document is given.
getScrollOrigin: function(node)
Returns the top, left corner of the viewrect as an mxPoint.
convertPoint: function(container,
x,
y)
Converts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.
ltrim: function(str,
chars)
Strips all whitespaces from the beginning of the string.
rtrim: function(str,
chars)
Strips all whitespaces from the end of the string.
trim: function(str,
chars)
Strips all whitespaces from both end of the string.
isNumeric: function(n)
Returns true if the specified value is numeric, that is, if it is not null, not an empty string, not a HEX number and isNaN returns false.
mod: function(n,
m)
Returns the remainder of division of n by m.
intersection: function (x0,
y0,
x1,
y1,
x2,
y2,
x3,
y3)
Returns the intersection of two lines as an mxPoint.
relativeCcw: function(x1,
y1,
x2,
y2,
px,
py)
Returns 1 if the given point on the right side of the segment, 0 if its on the segment, and -1 if the point is on the left side of the segment.
animateChanges: function(graph,
changes)
See mxEffects.animateChanges.
animateChanges: function(graph,
changes,
done)
Asynchronous animated move operation.
cascadeOpacity: function(graph,
cell,
opacity)
See mxEffects.cascadeOpacity.
cascadeOpacity: function(graph,
cell,
opacity)
Sets the opacity on the given cell and its descendants.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
See mxEffects.fadeOut.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
Asynchronous fade-out operation.
setOpacity: function(node,
value)
Sets the opacity of the specified DOM node to the given value in %.
createImage: function(src)
Creates and returns an image (IMG node) or VML image (v:image) in IE6 in quirks mode.
sortCells: function(cells,
ascending)
Sorts the given cells according to the order in the cell hierarchy.
getStylename: function(style)
Returns the stylename in a style of the form [(stylename|key=value);] or an empty string if the given style does not contain a stylename.
getStylenames: function(style)
Returns the stylenames in a style of the form [(stylename|key=value);] or an empty array if the given style does not contain any stylenames.
indexOfStylename: function(style,
stylename)
Returns the index of the given stylename in the given style.
addStylename: function(style,
stylename)
Adds the specified stylename to the given style if it does not already contain the stylename.
removeStylename: function(style,
stylename)
Removes all occurrences of the specified stylename in the given style and returns the updated style.
removeAllStylenames: function(style)
Removes all stylenames from the given style and returns the updated style.
setCellStyles: function(model,
cells,
key,
value)
Assigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.
setStyle: function(style,
key,
value)
Adds or removes the given key, value pair to the style and returns the new style.
setCellStyleFlags: function(model,
cells,
key,
flag,
value)
Sets or toggles the flag bit for the given key in the cell’s styles.
setStyleFlag: function(style,
key,
flag,
value)
Sets or removes the given key from the specified style and returns the new style.
getAlignmentAsPoint: function(align,
valign)
Returns an mxPoint that represents the horizontal and vertical alignment for numeric computations.
getSizeForString: function(text,
fontSize,
fontFamily,
textWidth)
Returns an mxRectangle with the size (width and height in pixels) of the given string.
Extends mxPoint to implement a 2-dimensional rectangle with double precision coordinates.
getViewXml: function(graph,
scale,
cells,
x0,
y0)
getScaleForPageCount: function(pageCount,
graph,
pageFormat,
border)
Returns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.
show: function(graph,
doc,
x0,
y0,
w,
h)
Copies the styles and the markup from the graph’s container into the given document and removes all cursor styles.
printScreen: function(graph)
Prints the specified graph using a new window and the built-in print dialog.
popup: function(content,
isInternalWindow)
Shows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.
Basic window inside a document.
alert: function(message)
Displayss the given alert in a new dialog.
prompt: function(message,
defaultValue)
Displays the given message in a prompt dialog.
confirm: function(message)
Displays the given message in a confirm dialog.
error: function(message,
width,
close,
icon)
Displays the given error message in a new mxWindow of the given width.
makeDraggable: function(element,
graphF,
funct,
dragElement,
dx,
dy,
autoscroll,
scalePreview,
highlightDropTargets,
getDropTarget)
Configures the given DOM element to act as a drag source for the specified graph.
DOM node of type ELEMENT.
Extends mxEventSource to implement a application wrapper for a graph that adds actions, I/O using mxCodec, auto-layout using mxLayoutManager, command history using undoManager, and standard dialogs and widgets, eg.
Defines the value for none.
Name of the field to be used to store the object ID.
Extends mxEventSource to implement a graph model.
Cells are the elements of the graph model.
Defines the default size for all fonts in points.
Defines the default family for all fonts in points.
Implements printing of a diagram across multiple pages.
Extends mxEventSource to implement a graph component for the browser.
Defines the rectangle for the A4 portrait page format.
Defines the image used for error dialogs.
Wrapper to create a drag source from a DOM element so that the element can be dragged over a graph and dropped into the graph as a new cell.
+
removeCursors: function(element)
Removes the cursors from the style of the given DOM node and its descendants.
getCurrentStyle: function()
Returns the current style of the specified element.
setPrefixedStyle: function()
Adds the given style with the standard name and an optional vendor prefix for the current browser.
hasScrollbars: function(node)
Returns true if the overflow CSS property of the given node is either scroll or auto.
bind: function(scope,
funct)
Returns a wrapper function that locks the execution scope of the given function to the specified scope.
eval: function(expr)
Evaluates the given expression using eval and returns the JavaScript object that represents the expression result.
findNode: function(node,
attr,
value)
Returns the first node where attr equals value.
findNodeByAttribute: function()
Returns the first node where the given attribute matches the given value.
getFunctionName: function(f)
Returns the name for the given function.
indexOf: function(array,
obj)
Returns the index of obj in array or -1 if the array does not contain the given object.
remove: function(obj,
array)
Removes all occurrences of the given object in the given array or object.
isNode: function(value,
nodeName,
attributeName,
attributeValue)
Returns true if the given value is an XML node with the node name and if the optional attribute has the specified value.
isAncestorNode: function(ancestor,
child)
Returns true if the given ancestor is an ancestor of the given DOM node in the DOM.
getChildNodes: function(node,
nodeType)
Returns an array of child nodes that are of the given node type.
importNode: function(doc,
node,
allChildren)
Cross browser implementation for document.importNode.
createXmlDocument: function()
Returns a new, empty XML document.
parseXml: function()
Parses the specified XML string into a new XML document and returns the new document.
clearSelection: function()
Clears the current selection in the page.
removeWhitespace: function(node,
before)
Removes the sibling text nodes for the given node that only consists of tabs, newlines and spaces.
htmlEntities: function(s,
newline)
Replaces characters (less than, greater than, newlines and quotes) with their HTML entities in the given string and returns the result.
isVml: function(node)
Returns true if the given node is in the VML namespace.
getXml: function(node,
linefeed)
Returns the XML content of the specified node.
getTextContent: function(node)
Returns the text content of the specified node.
setTextContent: function(node,
text)
Sets the text content of the specified node.
getInnerHtml: function()
Returns the inner HTML for the given node as a string or an empty string if no node was specified.
getOuterHtml: function()
Returns the outer HTML for the given node as a string or an empty string if no node was specified.
write: function(parent,
text)
Creates a text node for the given string and appends it to the given parent.
writeln: function(parent,
text)
Creates a text node for the given string and appends it to the given parent with an additional linefeed.
br: function(parent,
count)
Appends a linebreak to the given parent and returns the linebreak.
button: function(label,
funct,
doc)
Returns a new button with the given level and function as an onclick event handler.
para: function(parent,
text)
Appends a new paragraph with the given text to the specified parent and returns the paragraph.
addTransparentBackgroundFilter: function(node)
Adds a transparent background to the filter of the given node.
linkAction: function(parent,
text,
editor,
action,
pad)
Adds a hyperlink to the specified parent that invokes action on the specified editor.
linkInvoke: function(parent,
text,
editor,
functName,
arg,
pad)
Adds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.
link: function(parent,
text,
funct,
pad)
Adds a hyperlink to the specified parent and invokes the given function when the link is clicked.
fit: function(node)
Makes sure the given node is inside the visible area of the window.
load: function(url)
Loads the specified URL synchronously and returns the mxXmlRequest.
XML HTTP request wrapper.
get: function(url,
onload,
onerror)
Loads the specified URL asynchronously and invokes the given functions depending on the request status.
post: function(url,
params,
onload,
onerror)
Posts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.
submit: function(url,
params,
doc,
target)
Submits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.
mxXmlRequest.prototype.simulate = function(doc,
target)
Creates and posts a request to the given target URL using a dynamically created form inside the given document.
loadInto: function(url,
doc,
onload)
Loads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.
getValue: function(array,
key,
defaultValue)
Returns the value for the given key in the given associative array or the given default value if the value is null.
getNumber: function(array,
key,
defaultValue)
Returns the numeric value for the given key in the given associative array or the given default value (or 0) if the value is null.
getColor: function(array,
key,
defaultValue)
Returns the color value for the given key in the given associative array or the given default value if the value is null.
clone: function(obj,
transients,
shallow)
Recursively clones the specified object ignoring all fieldnames in the given array of transient fields.
equalPoints: function(a,
b)
Compares all mxPoints in the given lists.
equalEntries: function(a,
b)
Returns true if all entries of the given objects are equal.
isNaN: function(value)
Returns true if the given value is of type number and isNaN returns true.
extend: function(ctor,
superCtor)
Assigns a copy of the superclass prototype to the subclass prototype.
toString: function(obj)
Returns a textual representation of the specified object.
toRadians: function(deg)
Converts the given degree to radians.
toDegree: function(rad)
Converts the given radians to degree.
arcToCurves: function(x0,
y0,
r1,
r2,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Converts the given arc to a series of curves.
getBoundingBox: function(rect,
rotation,
cx)
Returns the bounding box for the rotated rectangle.
getRotatedPoint: function(pt,
cos,
sin,
c)
Rotates the given point by the given cos and sin.
reversePortConstraints: function(constraint)
Reverse the port constraint bitmask.
findNearestSegment: function(state,
x,
y)
Finds the index of the nearest segment on the given cell state for the specified coordinate pair.
rectangleIntersectsSegment: function(bounds,
p1,
p2)
Returns true if the given rectangle intersects the given segment.
contains: function(bounds,
x,
y)
Returns true if the specified point (x, y) is contained in the given rectangle.
intersects: function(a,
b)
Returns true if the two rectangles intersect.
getOffset: function(container,
scrollOffset)
Returns the offset for the specified container as an mxPoint.
Implements a 2-dimensional vector with double precision coordinates.
getDocumentScrollOrigin: function(doc)
Returns the scroll origin of the given document or the current document if no document is given.
getScrollOrigin: function(node)
Returns the top, left corner of the viewrect as an mxPoint.
convertPoint: function(container,
x,
y)
Converts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.
ltrim: function(str,
chars)
Strips all whitespaces from the beginning of the string.
rtrim: function(str,
chars)
Strips all whitespaces from the end of the string.
trim: function(str,
chars)
Strips all whitespaces from both end of the string.
isNumeric: function(n)
Returns true if the specified value is numeric, that is, if it is not null, not an empty string, not a HEX number and isNaN returns false.
mod: function(n,
m)
Returns the remainder of division of n by m.
intersection: function (x0,
y0,
x1,
y1,
x2,
y2,
x3,
y3)
Returns the intersection of two lines as an mxPoint.
relativeCcw: function(x1,
y1,
x2,
y2,
px,
py)
Returns 1 if the given point on the right side of the segment, 0 if its on the segment, and -1 if the point is on the left side of the segment.
animateChanges: function(graph,
changes)
See mxEffects.animateChanges.
animateChanges: function(graph,
changes,
done)
Asynchronous animated move operation.
cascadeOpacity: function(graph,
cell,
opacity)
See mxEffects.cascadeOpacity.
cascadeOpacity: function(graph,
cell,
opacity)
Sets the opacity on the given cell and its descendants.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
See mxEffects.fadeOut.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
Asynchronous fade-out operation.
setOpacity: function(node,
value)
Sets the opacity of the specified DOM node to the given value in %.
createImage: function(src)
Creates and returns an image (IMG node) or VML image (v:image) in IE6 in quirks mode.
sortCells: function(cells,
ascending)
Sorts the given cells according to the order in the cell hierarchy.
getStylename: function(style)
Returns the stylename in a style of the form [(stylename|key=value);] or an empty string if the given style does not contain a stylename.
getStylenames: function(style)
Returns the stylenames in a style of the form [(stylename|key=value);] or an empty array if the given style does not contain any stylenames.
indexOfStylename: function(style,
stylename)
Returns the index of the given stylename in the given style.
addStylename: function(style,
stylename)
Adds the specified stylename to the given style if it does not already contain the stylename.
removeStylename: function(style,
stylename)
Removes all occurrences of the specified stylename in the given style and returns the updated style.
removeAllStylenames: function(style)
Removes all stylenames from the given style and returns the updated style.
setCellStyles: function(model,
cells,
key,
value)
Assigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.
setStyle: function(style,
key,
value)
Adds or removes the given key, value pair to the style and returns the new style.
setCellStyleFlags: function(model,
cells,
key,
flag,
value)
Sets or toggles the flag bit for the given key in the cell’s styles.
setStyleFlag: function(style,
key,
flag,
value)
Sets or removes the given key from the specified style and returns the new style.
getAlignmentAsPoint: function(align,
valign)
Returns an mxPoint that represents the horizontal and vertical alignment for numeric computations.
getSizeForString: function(text,
fontSize,
fontFamily,
textWidth)
Returns an mxRectangle with the size (width and height in pixels) of the given string.
Extends mxPoint to implement a 2-dimensional rectangle with double precision coordinates.
getViewXml: function(graph,
scale,
cells,
x0,
y0)
getScaleForPageCount: function(pageCount,
graph,
pageFormat,
border)
Returns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.
show: function(graph,
doc,
x0,
y0,
w,
h)
Copies the styles and the markup from the graph’s container into the given document and removes all cursor styles.
printScreen: function(graph)
Prints the specified graph using a new window and the built-in print dialog.
popup: function(content,
isInternalWindow)
Shows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.
Basic window inside a document.
alert: function(message)
Displayss the given alert in a new dialog.
prompt: function(message,
defaultValue)
Displays the given message in a prompt dialog.
confirm: function(message)
Displays the given message in a confirm dialog.
error: function(message,
width,
close,
icon)
Displays the given error message in a new mxWindow of the given width.
makeDraggable: function(element,
graphF,
funct,
dragElement,
dx,
dy,
autoscroll,
scalePreview,
highlightDropTargets,
getDropTarget)
Configures the given DOM element to act as a drag source for the specified graph.
DOM node of type ELEMENT.
Extends mxEventSource to implement a application wrapper for a graph that adds actions, I/O using mxCodec, auto-layout using mxLayoutManager, command history using undoManager, and standard dialogs and widgets, eg.
Defines the value for none.
Name of the field to be used to store the object ID.
Extends mxEventSource to implement a graph model.
Cells are the elements of the graph model.
Defines the default size for all fonts in points.
Defines the default family for all fonts in points.
Implements printing of a diagram across multiple pages.
Extends mxEventSource to implement a graph component for the browser.
Defines the rectangle for the A4 portrait page format.
Defines the image used for error dialogs.
Wrapper to create a drag source from a DOM element so that the element can be dragged over a graph and dropped into the graph as a new cell.
diff --git a/docs/js-api/files/util/mxVmlCanvas2D-js.html b/docs/js-api/files/util/mxVmlCanvas2D-js.html index 298cde128..058161692 100644 --- a/docs/js-api/files/util/mxVmlCanvas2D-js.html +++ b/docs/js-api/files/util/mxVmlCanvas2D-js.html @@ -98,7 +98,7 @@ mxVmlCanvas2D.prototype.image = function(x, y, w, h, src, aspect, flipH, flipV) - diff --git a/docs/js-api/files/util/mxWindow-js.html b/docs/js-api/files/util/mxWindow-js.html index 06142747a..769aa666d 100644 --- a/docs/js-api/files/util/mxWindow-js.html +++ b/docs/js-api/files/util/mxWindow-js.html @@ -175,7 +175,7 @@ wnd.setVisible(true);

To limit the movement of a window, eg

- diff --git a/docs/js-api/files/util/mxXmlCanvas2D-js.html b/docs/js-api/files/util/mxXmlCanvas2D-js.html index 422d7667a..1687e0a44 100644 --- a/docs/js-api/files/util/mxXmlCanvas2D-js.html +++ b/docs/js-api/files/util/mxXmlCanvas2D-js.html @@ -117,7 +117,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/util/mxXmlRequest-js.html b/docs/js-api/files/util/mxXmlRequest-js.html index 1c4cc8011..5c9223f6d 100644 --- a/docs/js-api/files/util/mxXmlRequest-js.html +++ b/docs/js-api/files/util/mxXmlRequest-js.html @@ -94,7 +94,7 @@ new mxXmlRequest(url, 'xml='+xml).send();

Sends an encoded

- diff --git a/docs/js-api/files/view/mxCellEditor-js.html b/docs/js-api/files/view/mxCellEditor-js.html index 1b35db490..c1978922b 100644 --- a/docs/js-api/files/view/mxCellEditor-js.html +++ b/docs/js-api/files/view/mxCellEditor-js.html @@ -132,7 +132,7 @@ graph.fireMouseEvent = function(evtName, me, sender) - diff --git a/docs/js-api/files/view/mxCellOverlay-js.html b/docs/js-api/files/view/mxCellOverlay-js.html index 7f8461821..199d159e1 100644 --- a/docs/js-api/files/view/mxCellOverlay-js.html +++ b/docs/js-api/files/view/mxCellOverlay-js.html @@ -68,7 +68,7 @@ overlay.addListener(mxEvent.CLICK, function(sender, evt) - diff --git a/docs/js-api/files/view/mxCellRenderer-js.html b/docs/js-api/files/view/mxCellRenderer-js.html index 7a6f08ba9..110f0747f 100644 --- a/docs/js-api/files/view/mxCellRenderer-js.html +++ b/docs/js-api/files/view/mxCellRenderer-js.html @@ -109,7 +109,7 @@ for (var i in mxCellRenderer.prototype.defaultShapes) - diff --git a/docs/js-api/files/view/mxCellState-js.html b/docs/js-api/files/view/mxCellState-js.html index 0a1240d51..0f3fb4318 100644 --- a/docs/js-api/files/view/mxCellState-js.html +++ b/docs/js-api/files/view/mxCellState-js.html @@ -77,7 +77,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/view/mxCellStatePreview-js.html b/docs/js-api/files/view/mxCellStatePreview-js.html index ea3be218e..e66181d4c 100644 --- a/docs/js-api/files/view/mxCellStatePreview-js.html +++ b/docs/js-api/files/view/mxCellStatePreview-js.html @@ -45,7 +45,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/view/mxConnectionConstraint-js.html b/docs/js-api/files/view/mxConnectionConstraint-js.html index d29da9c21..a102fa864 100644 --- a/docs/js-api/files/view/mxConnectionConstraint-js.html +++ b/docs/js-api/files/view/mxConnectionConstraint-js.html @@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/view/mxEdgeStyle-js.html b/docs/js-api/files/view/mxEdgeStyle-js.html index 13941f95e..cb8f234e6 100644 --- a/docs/js-api/files/view/mxEdgeStyle-js.html +++ b/docs/js-api/files/view/mxEdgeStyle-js.html @@ -50,7 +50,7 @@ style[mxConstants.STYLE_EDGE] = mxEdgeStyle.MyStyle;

Note t

- diff --git a/docs/js-api/files/view/mxGraph-js.html b/docs/js-api/files/view/mxGraph-js.html index 39f733f9c..522994898 100644 --- a/docs/js-api/files/view/mxGraph-js.html +++ b/docs/js-api/files/view/mxGraph-js.html @@ -44,7 +44,7 @@ mxUtils.post(url, 'xml='+xmlString, function(req) });

Input

To load an XML representation of a diagram into an existing graph object mxUtils.load can be used as follows.  The url variable is the URL of the Java servlet, PHP page or HTTP handler that produces the XML string.

var xmlDoc = mxUtils.load(url).getXml();
 var node = xmlDoc.documentElement;
 var dec = new mxCodec(node.ownerDocument);
-dec.decode(node, graph.getModel());

For creating a page that loads the client and a diagram using a single request please refer to the deployment examples in the backends.

Functional dependencies

Resources

resources/graphLanguage resources for mxGraph
Summary
mxGraphExtends mxEventSource to implement a graph component for the browser.
Events
mxEvent.ROOTFires if the root in the model has changed.
mxEvent.ALIGN_CELLSFires between begin- and endUpdate in alignCells.
mxEvent.FLIP_EDGEFires between begin- and endUpdate in flipEdge.
mxEvent.ORDER_CELLSFires between begin- and endUpdate in orderCells.
mxEvent.CELLS_ORDEREDFires between begin- and endUpdate in cellsOrdered.
mxEvent.GROUP_CELLSFires between begin- and endUpdate in groupCells.
mxEvent.UNGROUP_CELLSFires between begin- and endUpdate in ungroupCells.
mxEvent.REMOVE_CELLS_FROM_PARENTFires between begin- and endUpdate in removeCellsFromParent.
mxEvent.ADD_CELLSFires between begin- and endUpdate in addCells.
mxEvent.CELLS_ADDEDFires between begin- and endUpdate in cellsAdded.
mxEvent.REMOVE_CELLSFires between begin- and endUpdate in removeCells.
mxEvent.CELLS_REMOVEDFires between begin- and endUpdate in cellsRemoved.
mxEvent.SPLIT_EDGEFires between begin- and endUpdate in splitEdge.
mxEvent.TOGGLE_CELLSFires between begin- and endUpdate in toggleCells.
mxEvent.FOLD_CELLSFires between begin- and endUpdate in foldCells.
mxEvent.CELLS_FOLDEDFires between begin- and endUpdate in cellsFolded.
mxEvent.UPDATE_CELL_SIZEFires between begin- and endUpdate in updateCellSize.
mxEvent.RESIZE_CELLSFires between begin- and endUpdate in resizeCells.
mxEvent.CELLS_RESIZEDFires between begin- and endUpdate in cellsResized.
mxEvent.MOVE_CELLSFires between begin- and endUpdate in moveCells.
mxEvent.CELLS_MOVEDFires between begin- and endUpdate in cellsMoved.
mxEvent.CONNECT_CELLFires between begin- and endUpdate in connectCell.
mxEvent.CELL_CONNECTEDFires between begin- and endUpdate in cellConnected.
mxEvent.REFRESHFires after refresh was executed.
mxEvent.CLICKFires in click after a click event.
mxEvent.DOUBLE_CLICKFires in dblClick after a double click.
mxEvent.GESTUREFires in fireGestureEvent after a touch gesture.
mxEvent.TAP_AND_HOLDFires in tapAndHold if a tap and hold event was detected.
mxEvent.FIRE_MOUSE_EVENTFires in fireMouseEvent before the mouse listeners are invoked.
mxEvent.SIZEFires after sizeDidChange was executed.
mxEvent.START_EDITINGFires before the in-place editor starts in startEditingAtCell.
mxEvent.EDITING_STARTEDFires after the in-place editor starts in startEditingAtCell.
mxEvent.EDITING_STOPPEDFires after the in-place editor stops in stopEditing.
mxEvent.LABEL_CHANGEDFires between begin- and endUpdate in cellLabelChanged.
mxEvent.ADD_OVERLAYFires after an overlay is added in addCellOverlay.
mxEvent.REMOVE_OVERLAYFires after an overlay is removed in removeCellOverlay and removeCellOverlays.
mxGraphConstructs a new mxGraph in the specified container.
EMPTY_ARRAYImmutable empty array instance.
Variables
mouseListenersHolds the mouse event listeners.
isMouseDownHolds the state of the mouse button.
modelHolds the mxGraphModel that contains the cells to be displayed.
viewHolds the mxGraphView that caches the mxCellStates for the cells.
stylesheetHolds the mxStylesheet that defines the appearance of the cells.
selectionModelHolds the mxGraphSelectionModel that models the current selection.
cellEditorHolds the mxCellEditor that is used as the in-place editing.
cellRendererHolds the mxCellRenderer for rendering the cells in the graph.
multiplicitiesAn array of mxMultiplicities describing the allowed connections in a graph.
renderHintRenderHint as it was passed to the constructor.
dialectDialect to be used for drawing the graph.
gridSizeSpecifies the grid size.
gridEnabledSpecifies if the grid is enabled.
portsEnabledSpecifies if ports are enabled.
nativeDoubleClickEnabledSpecifies if native double click events should be deteced.
doubleTapEnabledSpecifies if double taps on touch-based devices should be handled as a double click.
doubleTapTimeoutSpecifies the timeout for double taps and non-native double clicks.
doubleTapToleranceSpecifies the tolerance for double taps and double clicks in quirks mode.
lastTouchXHolds the x-coordinate of the last touch event for double tap detection.
lastTouchXHolds the y-coordinate of the last touch event for double tap detection.
lastTouchTimeHolds the time of the last touch event for double click detection.
tapAndHoldEnabledSpecifies if tap and hold should be used for starting connections on touch-based devices.
tapAndHoldDelaySpecifies the time for a tap and hold.
tapAndHoldInProgressTrue if the timer for tap and hold events is running.
tapAndHoldValidTrue as long as the timer is running and the touch events stay within the given <tapAndHoldTolerance>.
initialTouchXHolds the x-coordinate of the intial touch event for tap and hold.
initialTouchYHolds the y-coordinate of the intial touch event for tap and hold.
toleranceTolerance for a move to be handled as a single click.
defaultOverlapValue returned by getOverlap if isAllowOverlapParent returns true for the given cell.
defaultParentSpecifies the default parent to be used to insert new cells.
alternateEdgeStyleSpecifies the alternate edge style to be used if the main control point on an edge is being doubleclicked.
backgroundImageSpecifies the mxImage to be returned by getBackgroundImage.
pageVisibleSpecifies if the background page should be visible.
pageBreaksVisibleSpecifies if a dashed line should be drawn between multiple pages.
pageBreakColorSpecifies the color for page breaks.
pageBreakDashedSpecifies the page breaks should be dashed.
minPageBreakDistSpecifies the minimum distance for page breaks to be visible.
preferPageSizeSpecifies if the graph size should be rounded to the next page number in sizeDidChange.
pageFormatSpecifies the page format for the background page.
pageScaleSpecifies the scale of the background page.
enabledSpecifies the return value for isEnabled.
escapeEnabledSpecifies if mxKeyHandler should invoke escape when the escape key is pressed.
invokesStopCellEditingIf true, when editing is to be stopped by way of selection changing, data in diagram changing or other means stopCellEditing is invoked, and changes are saved.
enterStopsCellEditingIf true, pressing the enter key without pressing control or shift will stop editing and accept the new value.
useScrollbarsForPanningSpecifies if scrollbars should be used for panning in panGraph if any scrollbars are available.
exportEnabledSpecifies the return value for canExportCell.
importEnabledSpecifies the return value for canImportCell.
cellsLockedSpecifies the return value for isCellLocked.
cellsCloneableSpecifies the return value for isCellCloneable.
foldingEnabledSpecifies if folding (collapse and expand via an image icon in the graph should be enabled).
cellsEditableSpecifies the return value for isCellEditable.
cellsDeletableSpecifies the return value for isCellDeletable.
cellsMovableSpecifies the return value for isCellMovable.
edgeLabelsMovableSpecifies the return value for edges in isLabelMovable.
vertexLabelsMovableSpecifies the return value for vertices in isLabelMovable.
dropEnabledSpecifies the return value for isDropEnabled.
splitEnabledSpecifies if dropping onto edges should be enabled.
cellsResizableSpecifies the return value for isCellResizable.
cellsBendableSpecifies the return value for isCellsBendable.
cellsSelectableSpecifies the return value for isCellSelectable.
cellsDisconnectableSpecifies the return value for <isCellDisconntable>.
autoSizeCellsSpecifies if the graph should automatically update the cell size after an edit.
autoSizeCellsOnAddSpecifies if autoSize style should be applied when cells are added.
autoScrollSpecifies if the graph should automatically scroll if the mouse goes near the container edge while dragging.
timerAutoScrollSpecifies if timer-based autoscrolling should be used via mxPanningManager.
allowAutoPanningSpecifies if panning via panGraph should be allowed to implement autoscroll if no scrollbars are available in scrollPointToVisible.
ignoreScrollbarsSpecifies if the graph should automatically scroll regardless of the scrollbars.
autoExtendSpecifies if the size of the graph should be automatically extended if the mouse goes near the container edge while dragging.
maximumGraphBoundsmxRectangle that specifies the area in which all cells in the diagram should be placed.
minimumGraphSizemxRectangle that specifies the minimum size of the graph.
minimumContainerSizemxRectangle that specifies the minimum size of the <container> if resizeContainer is true.
maximumContainerSizemxRectangle that specifies the maximum size of the container if resizeContainer is true.
resizeContainerSpecifies if the container should be resized to the graph size when the graph size has changed.
borderBorder to be added to the bottom and right side when the container is being resized after the graph has been changed.
keepEdgesInForegroundSpecifies if edges should appear in the foreground regardless of their order in the model.
keepEdgesInBackgroundSpecifies if edges should appear in the background regardless of their order in the model.
allowNegativeCoordinatesSpecifies if negative coordinates for vertices are allowed.
constrainChildrenSpecifies if a child should be constrained inside the parent bounds after a move of the child.
constrainChildrenOnResizeSpecifies if children should be constrained according to the constrainChildren switch if cells are resized (including via foldCells).
extendParentsSpecifies if a parent should contain the child bounds after a resize of the child.
extendParentsOnAddSpecifies if parents should be extended according to the extendParents switch if cells are added.
extendParentsOnAddSpecifies if parents should be extended according to the extendParents switch if cells are added.
recursiveResizeSpecifies the return value for isRecursiveResize.
collapseToPreferredSizeSpecifies if the cell size should be changed to the preferred size when a cell is first collapsed.
zoomFactorSpecifies the factor used for zoomIn and zoomOut.
keepSelectionVisibleOnZoomSpecifies if the viewport should automatically contain the selection cells after a zoom operation.
centerZoomSpecifies if the zoom operations should go into the center of the actual diagram rather than going from top, left.
resetViewOnRootChangeSpecifies if the scale and translate should be reset if the root changes in the model.
resetEdgesOnResizeSpecifies if edge control points should be reset after the resize of a connected cell.
resetEdgesOnMoveSpecifies if edge control points should be reset after the move of a connected cell.
resetEdgesOnConnectSpecifies if edge control points should be reset after the the edge has been reconnected.
allowLoopsSpecifies if loops (aka self-references) are allowed.
defaultLoopStylemxEdgeStyle to be used for loops.
multigraphSpecifies if multiple edges in the same direction between the same pair of vertices are allowed.
connectableEdgesSpecifies if edges are connectable.
allowDanglingEdgesSpecifies if edges with disconnected terminals are allowed in the graph.
cloneInvalidEdgesSpecifies if edges that are cloned should be validated and only inserted if they are valid.
disconnectOnMoveSpecifies if edges should be disconnected from their terminals when they are moved.
labelsVisibleSpecifies if labels should be visible.
htmlLabelsSpecifies the return value for isHtmlLabel.
swimlaneSelectionEnabledSpecifies if swimlanes should be selectable via the content if the mouse is released.
swimlaneNestingSpecifies if nesting of swimlanes is allowed.
swimlaneIndicatorColorAttributeThe attribute used to find the color for the indicator if the indicator color is set to ‘swimlane’.
imageBundlesHolds the list of image bundles.
minFitScaleSpecifies the minimum scale to be applied in fit.
maxFitScaleSpecifies the maximum scale to be applied in fit.
panDxCurrent horizontal panning value.
panDyCurrent vertical panning value.
collapsedImageSpecifies the mxImage to indicate a collapsed state.
expandedImageSpecifies the mxImage to indicate a expanded state.
warningImageSpecifies the mxImage for the image to be used to display a warning overlay.
alreadyConnectedResourceSpecifies the resource key for the error message to be displayed in non-multigraphs when two vertices are already connected.
containsValidationErrorsResourceSpecifies the resource key for the warning message to be displayed when a collapsed cell contains validation errors.
collapseExpandResourceSpecifies the resource key for the tooltip on the collapse/expand icon.
initInitializes the <container> and creates the respective datastructures.
createHandlersCreates the tooltip-, panning-, connection- and graph-handler (in this order).
createTooltipHandlerCreates and returns a new mxTooltipHandler to be used in this graph.
createSelectionCellsHandlerCreates and returns a new mxTooltipHandler to be used in this graph.
createConnectionHandlerCreates and returns a new mxConnectionHandler to be used in this graph.
createGraphHandlerCreates and returns a new mxGraphHandler to be used in this graph.
createPanningHandlerCreates and returns a new mxPanningHandler to be used in this graph.
createPopupMenuHandlerCreates and returns a new mxPopupMenuHandler to be used in this graph.
createSelectionModelCreates a new mxGraphSelectionModel to be used in this graph.
createStylesheetCreates a new mxGraphSelectionModel to be used in this graph.
createGraphViewCreates a new mxGraphView to be used in this graph.
createCellRendererCreates a new mxCellRenderer to be used in this graph.
createCellEditorCreates a new mxCellEditor to be used in this graph.
getModelReturns the mxGraphModel that contains the cells.
getViewReturns the mxGraphView that contains the mxCellStates.
getStylesheetReturns the mxStylesheet that defines the style.
setStylesheetSets the mxStylesheet that defines the style.
getSelectionModelReturns the mxGraphSelectionModel that contains the selection.
setSelectionModelSets the <mxSelectionModel> that contains the selection.
getSelectionCellsForChangesReturns the cells to be selected for the given array of changes.
graphModelChangedCalled when the graph model changes.
getRemovedCellsForChangesReturns the cells that have been removed from the model.
processChangeProcesses the given change and invalidates the respective cached data in view.
removeStateForCellRemoves all cached information for the given cell and its descendants.
Overlays
addCellOverlayAdds an mxCellOverlay for the specified cell.
getCellOverlaysReturns the array of mxCellOverlays for the given cell or null, if no overlays are defined.
removeCellOverlayRemoves and returns the given mxCellOverlay from the given cell.
removeCellOverlaysRemoves all mxCellOverlays from the given cell.
clearCellOverlaysRemoves all mxCellOverlays in the graph for the given cell and all its descendants.
setCellWarningCreates an overlay for the given cell using the warning and image or warningImage and returns the new mxCellOverlay.
In-place editing
startEditingCalls startEditingAtCell using the given cell or the first selection cell.
startEditingAtCellFires a startEditing event and invokes mxCellEditor.startEditing on <editor>.
getEditingValueReturns the initial value for in-place editing.
stopEditingStops the current editing and fires a <editingStopped> event.
labelChangedSets the label of the specified cell to the given value using cellLabelChanged and fires mxEvent.LABEL_CHANGED while the transaction is in progress.
cellLabelChangedSets the new label for a cell.
Event processing
escapeProcesses an escape keystroke.
clickProcesses a singleclick on an optional cell and fires a click event.
dblClickProcesses a doubleclick on an optional cell and fires a <dblclick> event.
tapAndHoldHandles the mxMouseEvent by highlighting the mxCellState.
scrollPointToVisibleScrolls the graph to the given point, extending the graph container if specified.
createPanningManagerCreates and returns an mxPanningManager.
getBorderSizesReturns the size of the border and padding on all four sides of the container.
getPreferredPageSizeReturns the preferred size of the background page if preferPageSize is true.
sizeDidChangeCalled when the size of the graph has changed.
doResizeContainerResizes the container for the given graph width and height.
updatePageBreaksInvokes from sizeDidChange to redraw the page breaks.
Cell styles
getCellStyleReturns an array of key, value pairs representing the cell style for the given cell.
postProcessCellStyleTries to resolve the value for the image style in the image bundles and turns short data URIs as defined in mxImageBundle to data URIs as defined in RFC 2397 of the IETF.
setCellStyleSets the style of the specified cells.
toggleCellStyleToggles the boolean value for the given key in the style of the given cell and returns the new value as 0 or 1.
toggleCellStylesToggles the boolean value for the given key in the style of the given cells and returns the new value as 0 or 1.
setCellStylesSets the key to value in the styles of the given cells.
toggleCellStyleFlagsToggles the given bit for the given key in the styles of the specified cells.
setCellStyleFlagsSets or toggles the given bit for the given key in the styles of the specified cells.
Cell alignment and orientation
alignCellsAligns the given cells vertically or horizontally according to the given alignment using the optional parameter as the coordinate.
flipEdgeToggles the style of the given edge between null (or empty) and alternateEdgeStyle.
addImageBundleAdds the specified mxImageBundle.
removeImageBundleRemoves the specified mxImageBundle.
getImageFromBundlesSearches all imageBundles for the specified key and returns the value for the first match or null if the key is not found.
Order
orderCellsMoves the given cells to the front or back.
cellsOrderedMoves the given cells to the front or back.
Grouping
groupCellsAdds the cells into the given group.
getCellsForGroupReturns the cells with the same parent as the first cell in the given array.
getBoundsForGroupReturns the bounds to be used for the given group and children.
createGroupCellHook for creating the group cell to hold the given array of mxCells if no group cell was given to the <group> function.
ungroupCellsUngroups the given cells by moving the children the children to their parents parent and removing the empty groups.
removeCellsFromParentRemoves the specified cells from their parents and adds them to the default parent.
updateGroupBoundsUpdates the bounds of the given groups to include all children and returns the passed-in cells.
Cell cloning, insertion and removal
cloneCellsReturns the clones for the given cells.
insertVertexAdds a new vertex into the given parent mxCell using value as the user object and the given coordinates as the mxGeometry of the new vertex.
createVertexHook method that creates the new vertex for insertVertex.
insertEdgeAdds a new edge into the given parent mxCell using value as the user object and the given source and target as the terminals of the new edge.
createEdgeHook method that creates the new edge for insertEdge.
addEdgeAdds the edge to the parent and connects it to the given source and target terminals.
addCellAdds the cell to the parent and connects it to the given source and target terminals.
addCellsAdds the cells to the parent at the given index, connecting each cell to the optional source and target terminal.
cellsAddedAdds the specified cells to the given parent.
autoSizeCellRemoves the given cells from the graph including all connected edges if includeEdges is true.
removeCellsRemoves the given cells from the graph including all connected edges if includeEdges is true.
cellsRemovedRemoves the given cells from the model.
splitEdgeSplits the given edge by adding the newEdge between the previous source and the given cell and reconnecting the source of the given edge to the given cell.
Cell visibility
toggleCellsSets the visible state of the specified cells and all connected edges if includeEdges is true.
cellsToggledSets the visible state of the specified cells.
Folding
foldCellsSets the collapsed state of the specified cells and all descendants if recurse is true.
cellsFoldedSets the collapsed state of the specified cells.
swapBoundsSwaps the alternate and the actual bounds in the geometry of the given cell invoking updateAlternateBounds before carrying out the swap.
updateAlternateBoundsUpdates or sets the alternate bounds in the given geometry for the given cell depending on whether the cell is going to be collapsed.
addAllEdgesReturns an array with the given cells and all edges that are connected to a cell or one of its descendants.
getAllEdgesReturns all edges connected to the given cells or its descendants.
Cell sizing
updateCellSizeUpdates the size of the given cell in the model using cellSizeUpdated.
cellSizeUpdatedUpdates the size of the given cell in the model using getPreferredSizeForCell to get the new size.
getPreferredSizeForCellReturns the preferred width and height of the given mxCell as an mxRectangle.
resizeCellSets the bounds of the given cell using resizeCells.
resizeCellsSets the bounds of the given cells and fires a mxEvent.RESIZE_CELLS event while the transaction is in progress.
cellsResizedSets the bounds of the given cells and fires a mxEvent.CELLS_RESIZED event.
cellResizedResizes the parents recursively so that they contain the complete area of the resized child cell.
resizeChildCellsResizes the child cells of the given cell for the given new geometry with respect to the current geometry of the cell.
constrainChildCellsConstrains the children of the given cell using constrainChild.
scaleCellScales the points, position and size of the given cell according to the given vertical and horizontal scaling factors.
extendParentResizes the parents recursively so that they contain the complete area of the resized child cell.
Cell moving
importCellsClones and inserts the given cells into the graph using the move method and returns the inserted cells.
moveCellsMoves or clones the specified cells and moves the cells or clones by the given amount, adding them to the optional target cell.
cellsMovedMoves the specified cells by the given vector, disconnecting the cells using disconnectGraph is disconnect is true.
translateCellTranslates the geometry of the given cell and stores the new, translated geometry in the model as an atomic change.
getCellContainmentAreaReturns the mxRectangle inside which a cell is to be kept.
getMaximumGraphBoundsReturns the bounds inside which the diagram should be kept as an mxRectangle.
constrainChildKeeps the given cell inside the bounds returned by getCellContainmentArea for its parent, according to the rules defined by getOverlap and isConstrainChild.
resetEdgesResets the control points of the edges that are connected to the given cells if not both ends of the edge are in the given cells array.
resetEdgeResets the control points of the given edge.
Cell connecting and connection constraints
getOutlineConstraintReturns the constraint used to connect to the outline of the given state.
getAllConnectionConstraintsReturns an array of all mxConnectionConstraints for the given terminal.
getConnectionConstraintReturns an mxConnectionConstraint that describes the given connection point.
setConnectionConstraintSets the mxConnectionConstraint that describes the given connection point.
getConnectionPointReturns the nearest point in the list of absolute points or the center of the opposite terminal.
connectCellConnects the specified end of the given edge to the given terminal using cellConnected and fires mxEvent.CONNECT_CELL while the transaction is in progress.
cellConnectedSets the new terminal for the given edge and resets the edge points if resetEdgesOnConnect is true.
disconnectGraphDisconnects the given edges from the terminals which are not in the given array.
Drilldown
getCurrentRootReturns the current root of the displayed cell hierarchy.
getTranslateForRootReturns the translation to be used if the given cell is the root cell as an mxPoint.
isPortReturns true if the given cell is a “port”, that is, when connecting to it, the cell returned by getTerminalForPort should be used as the terminal and the port should be referenced by the ID in either the mxConstants.STYLE_SOURCE_PORT or the or the mxConstants.STYLE_TARGET_PORT.
getTerminalForPortReturns the terminal to be used for a given port.
getChildOffsetForCellReturns the offset to be used for the cells inside the given cell.
enterGroupUses the given cell as the root of the displayed cell hierarchy.
exitGroupChanges the current root to the next valid root in the displayed cell hierarchy.
homeUses the root of the model as the root of the displayed cell hierarchy and selects the previous root.
isValidRootReturns true if the given cell is a valid root for the cell display hierarchy.
Graph display
getGraphBoundsReturns the bounds of the visible graph.
getCellBoundsReturns the scaled, translated bounds for the given cell.
getBoundingBoxFromGeometryReturns the bounding box for the geometries of the vertices in the given array of cells.
refreshClears all cell states or the states for the hierarchy starting at the given cell and validates the graph.
snapSnaps the given numeric value to the grid if gridEnabled is true.
panGraphShifts the graph display by the given amount.
zoomInZooms into the graph by zoomFactor.
zoomOutZooms out of the graph by zoomFactor.
zoomActualResets the zoom and panning in the view.
zoomToZooms the graph to the given scale with an optional boolean center argument, which is passd to zoom.
centerCenters the graph in the container.
zoomZooms the graph using the given factor.
zoomToRectZooms the graph to the specified rectangle.
fitScales the graph such that the complete diagram fits into <container> and returns the current scale in the view.
scrollCellToVisiblePans the graph so that it shows the given cell.
scrollRectToVisiblePans the graph so that it shows the given rectangle.
getCellGeometryReturns the mxGeometry for the given cell.
isCellVisibleReturns true if the given cell is visible in this graph.
isCellCollapsedReturns true if the given cell is collapsed in this graph.
isCellConnectableReturns true if the given cell is connectable in this graph.
isOrthogonalReturns true if perimeter points should be computed such that the resulting edge has only horizontal or vertical segments.
isLoopReturns true if the given cell state is a loop.
isCloneEventReturns true if the given event is a clone event.
isToggleEventReturns true if the given event is a toggle event.
isGridEnabledEventReturns true if the given mouse event should be aligned to the grid.
isConstrainedEventReturns true if the given mouse event should be aligned to the grid.
Validation
validationAlertDisplays the given validation error in a dialog.
isEdgeValidChecks if the return value of getEdgeValidationError for the given arguments is null.
getEdgeValidationErrorReturns the validation error message to be displayed when inserting or changing an edges’ connectivity.
validateEdgeHook method for subclassers to return an error message for the given edge and terminals.
validateGraphValidates the graph by validating each descendant of the given cell or the root of the model.
getCellValidationErrorChecks all multiplicities that cannot be enforced while the graph is being modified, namely, all multiplicities that require a minimum of 1 edge.
validateCellHook method for subclassers to return an error message for the given cell and validation context.
Graph appearance
getBackgroundImageReturns the backgroundImage as an mxImage.
setBackgroundImageSets the new backgroundImage.
getFoldingImageReturns the mxImage used to display the collapsed state of the specified cell state.
convertValueToStringReturns the textual representation for the given cell.
getLabelReturns a string or DOM node that represents the label for the given cell.
isHtmlLabelReturns true if the label must be rendered as HTML markup.
isHtmlLabelsReturns htmlLabels.
setHtmlLabelsSets htmlLabels.
isWrappingThis enables wrapping for HTML labels.
isLabelClippedReturns true if the overflow portion of labels should be hidden.
getTooltipReturns the string or DOM node that represents the tooltip for the given state, node and coordinate pair.
getTooltipForCellReturns the string or DOM node to be used as the tooltip for the given cell.
getCursorForMouseEventReturns the cursor value to be used for the CSS of the shape for the given event.
getCursorForCellReturns the cursor value to be used for the CSS of the shape for the given cell.
getStartSizeReturns the start size of the given swimlane, that is, the width or height of the part that contains the title, depending on the horizontal style.
getImageReturns the image URL for the given cell state.
getVerticalAlignReturns the vertical alignment for the given cell state.
getIndicatorColorReturns the indicator color for the given cell state.
getIndicatorGradientColorReturns the indicator gradient color for the given cell state.
getIndicatorShapeReturns the indicator shape for the given cell state.
getIndicatorImageReturns the indicator image for the given cell state.
getBorderReturns the value of border.
setBorderSets the value of border.
isSwimlaneReturns true if the given cell is a swimlane in the graph.
Graph behaviour
isResizeContainerReturns resizeContainer.
setResizeContainerSets resizeContainer.
isEnabledReturns true if the graph is enabled.
setEnabledSpecifies if the graph should allow any interactions.
isEscapeEnabledReturns escapeEnabled.
setEscapeEnabledSets escapeEnabled.
isInvokesStopCellEditingReturns invokesStopCellEditing.
setInvokesStopCellEditingSets invokesStopCellEditing.
isEnterStopsCellEditingReturns enterStopsCellEditing.
setEnterStopsCellEditingSets enterStopsCellEditing.
isCellLockedReturns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
isCellsLockedReturns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
setLockedSets if any cell may be moved, sized, bended, disconnected, edited or selected.
getCloneableCellsReturns the cells which may be exported in the given array of cells.
isCellCloneableReturns true if the given cell is cloneable.
isCellsCloneableReturns cellsCloneable, that is, if the graph allows cloning of cells by using control-drag.
setCellsCloneableSpecifies if the graph should allow cloning of cells by holding down the control key while cells are being moved.
getExportableCellsReturns the cells which may be exported in the given array of cells.
canExportCellReturns true if the given cell may be exported to the clipboard.
getImportableCellsReturns the cells which may be imported in the given array of cells.
canImportCellReturns true if the given cell may be imported from the clipboard.
isCellSelectableReturns true if the given cell is selectable.
isCellsSelectableReturns cellsSelectable.
setCellsSelectableSets cellsSelectable.
getDeletableCellsReturns the cells which may be exported in the given array of cells.
isCellDeletableReturns true if the given cell is moveable.
isCellsDeletableReturns cellsDeletable.
setCellsDeletableSets cellsDeletable.
isLabelMovableReturns true if the given edges’s label is moveable.
isCellRotatableReturns true if the given cell is rotatable.
getMovableCellsReturns the cells which are movable in the given array of cells.
isCellMovableReturns true if the given cell is moveable.
isCellsMovableReturns cellsMovable.
setCellsMovableSpecifies if the graph should allow moving of cells.
isGridEnabledReturns gridEnabled as a boolean.
setGridEnabledSpecifies if the grid should be enabled.
isPortsEnabledReturns portsEnabled as a boolean.
setPortsEnabledSpecifies if the ports should be enabled.
getGridSizeReturns gridSize.
setGridSizeSets gridSize.
getToleranceReturns tolerance.
setToleranceSets tolerance.
isVertexLabelsMovableReturns vertexLabelsMovable.
setVertexLabelsMovableSets vertexLabelsMovable.
isEdgeLabelsMovableReturns edgeLabelsMovable.
isEdgeLabelsMovableSets edgeLabelsMovable.
isSwimlaneNestingReturns swimlaneNesting as a boolean.
setSwimlaneNestingSpecifies if swimlanes can be nested by drag and drop.
isSwimlaneSelectionEnabledReturns swimlaneSelectionEnabled as a boolean.
setSwimlaneSelectionEnabledSpecifies if swimlanes should be selected if the mouse is released over their content area.
isMultigraphReturns multigraph as a boolean.
setMultigraphSpecifies if the graph should allow multiple connections between the same pair of vertices.
isAllowLoopsReturns allowLoops as a boolean.
setAllowDanglingEdgesSpecifies if dangling edges are allowed, that is, if edges are allowed that do not have a source and/or target terminal defined.
isAllowDanglingEdgesReturns allowDanglingEdges as a boolean.
setConnectableEdgesSpecifies if edges should be connectable.
isConnectableEdgesReturns connectableEdges as a boolean.
setCloneInvalidEdgesSpecifies if edges should be inserted when cloned but not valid wrt.
isCloneInvalidEdgesReturns cloneInvalidEdges as a boolean.
setAllowLoopsSpecifies if loops are allowed.
isDisconnectOnMoveReturns disconnectOnMove as a boolean.
setDisconnectOnMoveSpecifies if edges should be disconnected when moved.
isDropEnabledReturns dropEnabled as a boolean.
setDropEnabledSpecifies if the graph should allow dropping of cells onto or into other cells.
isSplitEnabledReturns splitEnabled as a boolean.
setSplitEnabledSpecifies if the graph should allow dropping of cells onto or into other cells.
isCellResizableReturns true if the given cell is resizable.
isCellsResizableReturns cellsResizable.
setCellsResizableSpecifies if the graph should allow resizing of cells.
isTerminalPointMovableReturns true if the given terminal point is movable.
isCellBendableReturns true if the given cell is bendable.
isCellsBendableReturns <cellsBenadable>.
setCellsBendableSpecifies if the graph should allow bending of edges.
isCellEditableReturns true if the given cell is editable.
isCellsEditableReturns cellsEditable.
setCellsEditableSpecifies if the graph should allow in-place editing for cell labels.
isCellDisconnectableReturns true if the given cell is disconnectable from the source or target terminal.
isCellsDisconnectableReturns cellsDisconnectable.
setCellsDisconnectableSets cellsDisconnectable.
isValidSourceReturns true if the given cell is a valid source for new connections.
isValidTargetReturns isValidSource for the given cell.
isValidConnectionReturns true if the given target cell is a valid target for source.
setConnectableSpecifies if the graph should allow new connections.
isConnectableReturns true if the <connectionHandler> is enabled.
setTooltipsSpecifies if tooltips should be enabled.
setPanningSpecifies if panning should be enabled.
isEditingReturns true if the given cell is currently being edited.
isAutoSizeCellReturns true if the size of the given cell should automatically be updated after a change of the label.
isAutoSizeCellsReturns autoSizeCells.
setAutoSizeCellsSpecifies if cell sizes should be automatically updated after a label change.
isExtendParentReturns true if the parent of the given cell should be extended if the child has been resized so that it overlaps the parent.
isExtendParentsReturns extendParents.
setExtendParentsSets extendParents.
isExtendParentsOnAddReturns extendParentsOnAdd.
setExtendParentsOnAddSets extendParentsOnAdd.
isExtendParentsOnAddReturns extendParentsOnAdd.
setExtendParentsOnAddSets extendParentsOnAdd.
isRecursiveResizeReturns recursiveResize.
setRecursiveResizeSets recursiveResize.
isConstrainChildReturns true if the given cell should be kept inside the bounds of its parent according to the rules defined by getOverlap and isAllowOverlapParent.
isConstrainChildrenReturns constrainChildren.
setConstrainChildrenSets constrainChildren.
setConstrainChildrenOnResizeSets constrainChildrenOnResize.
isConstrainChildrenOnResizeReturns constrainChildrenOnResize.
isConstrainChildrenReturns allowNegativeCoordinates.
setConstrainChildrenSets allowNegativeCoordinates.
getOverlapReturns a decimal number representing the amount of the width and height of the given cell that is allowed to overlap its parent.
isAllowOverlapParentReturns true if the given cell is allowed to be placed outside of the parents area.
getFoldableCellsReturns the cells which are movable in the given array of cells.
isCellFoldableReturns true if the given cell is foldable.
isValidDropTargetReturns true if the given cell is a valid drop target for the specified cells.
isSplitTargetReturns true if the given edge may be splitted into two edges with the given cell as a new terminal between the two.
getDropTargetReturns the given cell if it is a drop target for the given cells or the nearest ancestor that may be used as a drop target for the given cells.
Cell retrieval
getDefaultParentReturns defaultParent or mxGraphView.currentRoot or the first child child of mxGraphModel.root if both are null.
setDefaultParentSets the defaultParent to the given cell.
getSwimlaneReturns the nearest ancestor of the given cell which is a swimlane, or the given cell, if it is itself a swimlane.
getSwimlaneAtReturns the bottom-most swimlane that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
getCellAtReturns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy starting at the given parent.
intersectsReturns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
hitsSwimlaneContentReturns true if the given coordinate pair is inside the content are of the given swimlane.
getChildVerticesReturns the visible child vertices of the given parent.
getChildEdgesReturns the visible child edges of the given parent.
getChildCellsReturns the visible child vertices or edges in the given parent.
getConnectionsReturns all visible edges connected to the given cell without loops.
getIncomingEdgesReturns the visible incoming edges for the given cell.
getOutgoingEdgesReturns the visible outgoing edges for the given cell.
getEdgesReturns the incoming and/or outgoing edges for the given cell.
isValidAncestorReturns whether or not the specified parent is a valid ancestor of the specified cell, either direct or indirectly based on whether ancestor recursion is enabled.
getOppositesReturns all distinct visible opposite cells for the specified terminal on the given edges.
getEdgesBetweenReturns the edges between the given source and target.
getPointForEventReturns an mxPoint representing the given event in the unscaled, non-translated coordinate space of <container> and applies the grid.
getCellsReturns the child vertices and edges of the given parent that are contained in the given rectangle.
getCellsBeyondReturns the children of the given parent that are contained in the halfpane from the given point (x0, y0) rightwards and/or downwards depending on rightHalfpane and bottomHalfpane.
findTreeRootsReturns all children in the given parent which do not have incoming edges.
traverseTraverses the (directed) graph invoking the given function for each visited vertex and edge.
Selection
isCellSelectedReturns true if the given cell is selected.
isSelectionEmptyReturns true if the selection is empty.
clearSelectionClears the selection using mxGraphSelectionModel.clear.
getSelectionCountReturns the number of selected cells.
getSelectionCellReturns the first cell from the array of selected mxCells.
getSelectionCellsReturns the array of selected mxCells.
setSelectionCellSets the selection cell.
setSelectionCellsSets the selection cell.
addSelectionCellAdds the given cell to the selection.
addSelectionCellsAdds the given cells to the selection.
removeSelectionCellRemoves the given cell from the selection.
removeSelectionCellsRemoves the given cells from the selection.
selectRegionSelects and returns the cells inside the given rectangle for the specified event.
selectNextCellSelects the next cell.
selectPreviousCellSelects the previous cell.
selectParentCellSelects the parent cell.
selectChildCellSelects the first child cell.
selectCellSelects the next, parent, first child or previous cell, if all arguments are false.
selectAllSelects all children of the given parent cell or the children of the default parent if no parent is specified.
selectVerticesSelect all vertices inside the given parent or the default parent.
selectVerticesSelect all vertices inside the given parent or the default parent.
selectCellsSelects all vertices and/or edges depending on the given boolean arguments recursively, starting at the given parent or the default parent if no parent is specified.
selectCellForEventSelects the given cell by either adding it to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
selectCellsForEventSelects the given cells by either adding them to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
Selection state
createHandlerCreates a new handler for the given cell state.
createVertexHandlerHooks to create a new mxVertexHandler for the given mxCellState.
createEdgeHandlerHooks to create a new mxEdgeHandler for the given mxCellState.
createEdgeSegmentHandlerHooks to create a new <mxEdgeSegmentHandler> for the given mxCellState.
createElbowEdgeHandlerHooks to create a new mxElbowEdgeHandler for the given mxCellState.
Graph events
addMouseListenerAdds a listener to the graph event dispatch loop.
removeMouseListenerRemoves the specified graph listener.
updateMouseEventSets the graphX and graphY properties if the given mxMouseEvent if required and returned the event.
getStateForEventReturns the state for the given touch event.
isEventIgnoredReturns true if the event should be ignored in fireMouseEvent.
isSyntheticEventIgnoredHook for ignoring synthetic mouse events after touchend in Firefox.
isEventSourceIgnoredReturns true if the event should be ignored in fireMouseEvent.
fireMouseEventDispatches the given event in the graph event dispatch loop.
consumeMouseEventDestroys the graph and all its resources.
fireGestureEventDispatches a mxEvent.GESTURE event.
destroyDestroys the graph and all its resources.
+dec.decode(node, graph.getModel());

For creating a page that loads the client and a diagram using a single request please refer to the deployment examples in the backends.

Functional dependencies

Resources

resources/graphLanguage resources for mxGraph
Summary
mxGraphExtends mxEventSource to implement a graph component for the browser.
Events
mxEvent.ROOTFires if the root in the model has changed.
mxEvent.ALIGN_CELLSFires between begin- and endUpdate in alignCells.
mxEvent.FLIP_EDGEFires between begin- and endUpdate in flipEdge.
mxEvent.ORDER_CELLSFires between begin- and endUpdate in orderCells.
mxEvent.CELLS_ORDEREDFires between begin- and endUpdate in cellsOrdered.
mxEvent.GROUP_CELLSFires between begin- and endUpdate in groupCells.
mxEvent.UNGROUP_CELLSFires between begin- and endUpdate in ungroupCells.
mxEvent.REMOVE_CELLS_FROM_PARENTFires between begin- and endUpdate in removeCellsFromParent.
mxEvent.ADD_CELLSFires between begin- and endUpdate in addCells.
mxEvent.CELLS_ADDEDFires between begin- and endUpdate in cellsAdded.
mxEvent.REMOVE_CELLSFires between begin- and endUpdate in removeCells.
mxEvent.CELLS_REMOVEDFires between begin- and endUpdate in cellsRemoved.
mxEvent.SPLIT_EDGEFires between begin- and endUpdate in splitEdge.
mxEvent.TOGGLE_CELLSFires between begin- and endUpdate in toggleCells.
mxEvent.FOLD_CELLSFires between begin- and endUpdate in foldCells.
mxEvent.CELLS_FOLDEDFires between begin- and endUpdate in cellsFolded.
mxEvent.UPDATE_CELL_SIZEFires between begin- and endUpdate in updateCellSize.
mxEvent.RESIZE_CELLSFires between begin- and endUpdate in resizeCells.
mxEvent.CELLS_RESIZEDFires between begin- and endUpdate in cellsResized.
mxEvent.MOVE_CELLSFires between begin- and endUpdate in moveCells.
mxEvent.CELLS_MOVEDFires between begin- and endUpdate in cellsMoved.
mxEvent.CONNECT_CELLFires between begin- and endUpdate in connectCell.
mxEvent.CELL_CONNECTEDFires between begin- and endUpdate in cellConnected.
mxEvent.REFRESHFires after refresh was executed.
mxEvent.CLICKFires in click after a click event.
mxEvent.DOUBLE_CLICKFires in dblClick after a double click.
mxEvent.GESTUREFires in fireGestureEvent after a touch gesture.
mxEvent.TAP_AND_HOLDFires in tapAndHold if a tap and hold event was detected.
mxEvent.FIRE_MOUSE_EVENTFires in fireMouseEvent before the mouse listeners are invoked.
mxEvent.SIZEFires after sizeDidChange was executed.
mxEvent.START_EDITINGFires before the in-place editor starts in startEditingAtCell.
mxEvent.EDITING_STARTEDFires after the in-place editor starts in startEditingAtCell.
mxEvent.EDITING_STOPPEDFires after the in-place editor stops in stopEditing.
mxEvent.LABEL_CHANGEDFires between begin- and endUpdate in cellLabelChanged.
mxEvent.ADD_OVERLAYFires after an overlay is added in addCellOverlay.
mxEvent.REMOVE_OVERLAYFires after an overlay is removed in removeCellOverlay and removeCellOverlays.
mxGraphConstructs a new mxGraph in the specified container.
EMPTY_ARRAYImmutable empty array instance.
Variables
mouseListenersHolds the mouse event listeners.
isMouseDownHolds the state of the mouse button.
modelHolds the mxGraphModel that contains the cells to be displayed.
viewHolds the mxGraphView that caches the mxCellStates for the cells.
stylesheetHolds the mxStylesheet that defines the appearance of the cells.
selectionModelHolds the mxGraphSelectionModel that models the current selection.
cellEditorHolds the mxCellEditor that is used as the in-place editing.
cellRendererHolds the mxCellRenderer for rendering the cells in the graph.
multiplicitiesAn array of mxMultiplicities describing the allowed connections in a graph.
renderHintRenderHint as it was passed to the constructor.
dialectDialect to be used for drawing the graph.
gridSizeSpecifies the grid size.
gridEnabledSpecifies if the grid is enabled.
portsEnabledSpecifies if ports are enabled.
nativeDoubleClickEnabledSpecifies if native double click events should be deteced.
doubleTapEnabledSpecifies if double taps on touch-based devices should be handled as a double click.
doubleTapTimeoutSpecifies the timeout for double taps and non-native double clicks.
doubleTapToleranceSpecifies the tolerance for double taps and double clicks in quirks mode.
lastTouchXHolds the x-coordinate of the last touch event for double tap detection.
lastTouchXHolds the y-coordinate of the last touch event for double tap detection.
lastTouchTimeHolds the time of the last touch event for double click detection.
tapAndHoldEnabledSpecifies if tap and hold should be used for starting connections on touch-based devices.
tapAndHoldDelaySpecifies the time for a tap and hold.
tapAndHoldInProgressTrue if the timer for tap and hold events is running.
tapAndHoldValidTrue as long as the timer is running and the touch events stay within the given <tapAndHoldTolerance>.
initialTouchXHolds the x-coordinate of the intial touch event for tap and hold.
initialTouchYHolds the y-coordinate of the intial touch event for tap and hold.
toleranceTolerance for a move to be handled as a single click.
defaultOverlapValue returned by getOverlap if isAllowOverlapParent returns true for the given cell.
defaultParentSpecifies the default parent to be used to insert new cells.
alternateEdgeStyleSpecifies the alternate edge style to be used if the main control point on an edge is being doubleclicked.
backgroundImageSpecifies the mxImage to be returned by getBackgroundImage.
pageVisibleSpecifies if the background page should be visible.
pageBreaksVisibleSpecifies if a dashed line should be drawn between multiple pages.
pageBreakColorSpecifies the color for page breaks.
pageBreakDashedSpecifies the page breaks should be dashed.
minPageBreakDistSpecifies the minimum distance for page breaks to be visible.
preferPageSizeSpecifies if the graph size should be rounded to the next page number in sizeDidChange.
pageFormatSpecifies the page format for the background page.
pageScaleSpecifies the scale of the background page.
enabledSpecifies the return value for isEnabled.
escapeEnabledSpecifies if mxKeyHandler should invoke escape when the escape key is pressed.
invokesStopCellEditingIf true, when editing is to be stopped by way of selection changing, data in diagram changing or other means stopCellEditing is invoked, and changes are saved.
enterStopsCellEditingIf true, pressing the enter key without pressing control or shift will stop editing and accept the new value.
useScrollbarsForPanningSpecifies if scrollbars should be used for panning in panGraph if any scrollbars are available.
exportEnabledSpecifies the return value for canExportCell.
importEnabledSpecifies the return value for canImportCell.
cellsLockedSpecifies the return value for isCellLocked.
cellsCloneableSpecifies the return value for isCellCloneable.
foldingEnabledSpecifies if folding (collapse and expand via an image icon in the graph should be enabled).
cellsEditableSpecifies the return value for isCellEditable.
cellsDeletableSpecifies the return value for isCellDeletable.
cellsMovableSpecifies the return value for isCellMovable.
edgeLabelsMovableSpecifies the return value for edges in isLabelMovable.
vertexLabelsMovableSpecifies the return value for vertices in isLabelMovable.
dropEnabledSpecifies the return value for isDropEnabled.
splitEnabledSpecifies if dropping onto edges should be enabled.
cellsResizableSpecifies the return value for isCellResizable.
cellsBendableSpecifies the return value for isCellsBendable.
cellsSelectableSpecifies the return value for isCellSelectable.
cellsDisconnectableSpecifies the return value for <isCellDisconntable>.
autoSizeCellsSpecifies if the graph should automatically update the cell size after an edit.
autoSizeCellsOnAddSpecifies if autoSize style should be applied when cells are added.
autoScrollSpecifies if the graph should automatically scroll if the mouse goes near the container edge while dragging.
timerAutoScrollSpecifies if timer-based autoscrolling should be used via mxPanningManager.
allowAutoPanningSpecifies if panning via panGraph should be allowed to implement autoscroll if no scrollbars are available in scrollPointToVisible.
ignoreScrollbarsSpecifies if the graph should automatically scroll regardless of the scrollbars.
autoExtendSpecifies if the size of the graph should be automatically extended if the mouse goes near the container edge while dragging.
maximumGraphBoundsmxRectangle that specifies the area in which all cells in the diagram should be placed.
minimumGraphSizemxRectangle that specifies the minimum size of the graph.
minimumContainerSizemxRectangle that specifies the minimum size of the <container> if resizeContainer is true.
maximumContainerSizemxRectangle that specifies the maximum size of the container if resizeContainer is true.
resizeContainerSpecifies if the container should be resized to the graph size when the graph size has changed.
borderBorder to be added to the bottom and right side when the container is being resized after the graph has been changed.
keepEdgesInForegroundSpecifies if edges should appear in the foreground regardless of their order in the model.
keepEdgesInBackgroundSpecifies if edges should appear in the background regardless of their order in the model.
allowNegativeCoordinatesSpecifies if negative coordinates for vertices are allowed.
constrainChildrenSpecifies if a child should be constrained inside the parent bounds after a move of the child.
constrainChildrenOnResizeSpecifies if children should be constrained according to the constrainChildren switch if cells are resized (including via foldCells).
extendParentsSpecifies if a parent should contain the child bounds after a resize of the child.
extendParentsOnAddSpecifies if parents should be extended according to the extendParents switch if cells are added.
extendParentsOnAddSpecifies if parents should be extended according to the extendParents switch if cells are added.
recursiveResizeSpecifies the return value for isRecursiveResize.
collapseToPreferredSizeSpecifies if the cell size should be changed to the preferred size when a cell is first collapsed.
zoomFactorSpecifies the factor used for zoomIn and zoomOut.
keepSelectionVisibleOnZoomSpecifies if the viewport should automatically contain the selection cells after a zoom operation.
centerZoomSpecifies if the zoom operations should go into the center of the actual diagram rather than going from top, left.
resetViewOnRootChangeSpecifies if the scale and translate should be reset if the root changes in the model.
resetEdgesOnResizeSpecifies if edge control points should be reset after the resize of a connected cell.
resetEdgesOnMoveSpecifies if edge control points should be reset after the move of a connected cell.
resetEdgesOnConnectSpecifies if edge control points should be reset after the the edge has been reconnected.
allowLoopsSpecifies if loops (aka self-references) are allowed.
defaultLoopStylemxEdgeStyle to be used for loops.
multigraphSpecifies if multiple edges in the same direction between the same pair of vertices are allowed.
connectableEdgesSpecifies if edges are connectable.
allowDanglingEdgesSpecifies if edges with disconnected terminals are allowed in the graph.
cloneInvalidEdgesSpecifies if edges that are cloned should be validated and only inserted if they are valid.
disconnectOnMoveSpecifies if edges should be disconnected from their terminals when they are moved.
labelsVisibleSpecifies if labels should be visible.
htmlLabelsSpecifies the return value for isHtmlLabel.
swimlaneSelectionEnabledSpecifies if swimlanes should be selectable via the content if the mouse is released.
swimlaneNestingSpecifies if nesting of swimlanes is allowed.
swimlaneIndicatorColorAttributeThe attribute used to find the color for the indicator if the indicator color is set to ‘swimlane’.
imageBundlesHolds the list of image bundles.
minFitScaleSpecifies the minimum scale to be applied in fit.
maxFitScaleSpecifies the maximum scale to be applied in fit.
panDxCurrent horizontal panning value.
panDyCurrent vertical panning value.
collapsedImageSpecifies the mxImage to indicate a collapsed state.
expandedImageSpecifies the mxImage to indicate a expanded state.
warningImageSpecifies the mxImage for the image to be used to display a warning overlay.
alreadyConnectedResourceSpecifies the resource key for the error message to be displayed in non-multigraphs when two vertices are already connected.
containsValidationErrorsResourceSpecifies the resource key for the warning message to be displayed when a collapsed cell contains validation errors.
collapseExpandResourceSpecifies the resource key for the tooltip on the collapse/expand icon.
initInitializes the <container> and creates the respective datastructures.
createHandlersCreates the tooltip-, panning-, connection- and graph-handler (in this order).
createTooltipHandlerCreates and returns a new mxTooltipHandler to be used in this graph.
createSelectionCellsHandlerCreates and returns a new mxTooltipHandler to be used in this graph.
createConnectionHandlerCreates and returns a new mxConnectionHandler to be used in this graph.
createGraphHandlerCreates and returns a new mxGraphHandler to be used in this graph.
createPanningHandlerCreates and returns a new mxPanningHandler to be used in this graph.
createPopupMenuHandlerCreates and returns a new mxPopupMenuHandler to be used in this graph.
createSelectionModelCreates a new mxGraphSelectionModel to be used in this graph.
createStylesheetCreates a new mxGraphSelectionModel to be used in this graph.
createGraphViewCreates a new mxGraphView to be used in this graph.
createCellRendererCreates a new mxCellRenderer to be used in this graph.
createCellEditorCreates a new mxCellEditor to be used in this graph.
getModelReturns the mxGraphModel that contains the cells.
getViewReturns the mxGraphView that contains the mxCellStates.
getStylesheetReturns the mxStylesheet that defines the style.
setStylesheetSets the mxStylesheet that defines the style.
getSelectionModelReturns the mxGraphSelectionModel that contains the selection.
setSelectionModelSets the <mxSelectionModel> that contains the selection.
getSelectionCellsForChangesReturns the cells to be selected for the given array of changes.
graphModelChangedCalled when the graph model changes.
getRemovedCellsForChangesReturns the cells that have been removed from the model.
processChangeProcesses the given change and invalidates the respective cached data in view.
removeStateForCellRemoves all cached information for the given cell and its descendants.
Overlays
addCellOverlayAdds an mxCellOverlay for the specified cell.
getCellOverlaysReturns the array of mxCellOverlays for the given cell or null, if no overlays are defined.
removeCellOverlayRemoves and returns the given mxCellOverlay from the given cell.
removeCellOverlaysRemoves all mxCellOverlays from the given cell.
clearCellOverlaysRemoves all mxCellOverlays in the graph for the given cell and all its descendants.
setCellWarningCreates an overlay for the given cell using the warning and image or warningImage and returns the new mxCellOverlay.
In-place editing
startEditingCalls startEditingAtCell using the given cell or the first selection cell.
startEditingAtCellFires a startEditing event and invokes mxCellEditor.startEditing on <editor>.
getEditingValueReturns the initial value for in-place editing.
stopEditingStops the current editing and fires a <editingStopped> event.
labelChangedSets the label of the specified cell to the given value using cellLabelChanged and fires mxEvent.LABEL_CHANGED while the transaction is in progress.
cellLabelChangedSets the new label for a cell.
Event processing
escapeProcesses an escape keystroke.
clickProcesses a singleclick on an optional cell and fires a click event.
dblClickProcesses a doubleclick on an optional cell and fires a <dblclick> event.
tapAndHoldHandles the mxMouseEvent by highlighting the mxCellState.
scrollPointToVisibleScrolls the graph to the given point, extending the graph container if specified.
createPanningManagerCreates and returns an mxPanningManager.
getBorderSizesReturns the size of the border and padding on all four sides of the container.
getPreferredPageSizeReturns the preferred size of the background page if preferPageSize is true.
sizeDidChangeCalled when the size of the graph has changed.
doResizeContainerResizes the container for the given graph width and height.
updatePageBreaksInvokes from sizeDidChange to redraw the page breaks.
Cell styles
getCellStyleReturns an array of key, value pairs representing the cell style for the given cell.
postProcessCellStyleTries to resolve the value for the image style in the image bundles and turns short data URIs as defined in mxImageBundle to data URIs as defined in RFC 2397 of the IETF.
setCellStyleSets the style of the specified cells.
toggleCellStyleToggles the boolean value for the given key in the style of the given cell and returns the new value as 0 or 1.
toggleCellStylesToggles the boolean value for the given key in the style of the given cells and returns the new value as 0 or 1.
setCellStylesSets the key to value in the styles of the given cells.
toggleCellStyleFlagsToggles the given bit for the given key in the styles of the specified cells.
setCellStyleFlagsSets or toggles the given bit for the given key in the styles of the specified cells.
Cell alignment and orientation
alignCellsAligns the given cells vertically or horizontally according to the given alignment using the optional parameter as the coordinate.
flipEdgeToggles the style of the given edge between null (or empty) and alternateEdgeStyle.
addImageBundleAdds the specified mxImageBundle.
removeImageBundleRemoves the specified mxImageBundle.
getImageFromBundlesSearches all imageBundles for the specified key and returns the value for the first match or null if the key is not found.
Order
orderCellsMoves the given cells to the front or back.
cellsOrderedMoves the given cells to the front or back.
Grouping
groupCellsAdds the cells into the given group.
getCellsForGroupReturns the cells with the same parent as the first cell in the given array.
getBoundsForGroupReturns the bounds to be used for the given group and children.
createGroupCellHook for creating the group cell to hold the given array of mxCells if no group cell was given to the <group> function.
ungroupCellsUngroups the given cells by moving the children the children to their parents parent and removing the empty groups.
removeCellsFromParentRemoves the specified cells from their parents and adds them to the default parent.
updateGroupBoundsUpdates the bounds of the given groups to include all children and returns the passed-in cells.
Cell cloning, insertion and removal
cloneCellsReturns the clones for the given cells.
insertVertexAdds a new vertex into the given parent mxCell using value as the user object and the given coordinates as the mxGeometry of the new vertex.
createVertexHook method that creates the new vertex for insertVertex.
insertEdgeAdds a new edge into the given parent mxCell using value as the user object and the given source and target as the terminals of the new edge.
createEdgeHook method that creates the new edge for insertEdge.
addEdgeAdds the edge to the parent and connects it to the given source and target terminals.
addCellAdds the cell to the parent and connects it to the given source and target terminals.
addCellsAdds the cells to the parent at the given index, connecting each cell to the optional source and target terminal.
cellsAddedAdds the specified cells to the given parent.
autoSizeCellRemoves the given cells from the graph including all connected edges if includeEdges is true.
removeCellsRemoves the given cells from the graph including all connected edges if includeEdges is true.
cellsRemovedRemoves the given cells from the model.
splitEdgeSplits the given edge by adding the newEdge between the previous source and the given cell and reconnecting the source of the given edge to the given cell.
Cell visibility
toggleCellsSets the visible state of the specified cells and all connected edges if includeEdges is true.
cellsToggledSets the visible state of the specified cells.
Folding
foldCellsSets the collapsed state of the specified cells and all descendants if recurse is true.
cellsFoldedSets the collapsed state of the specified cells.
swapBoundsSwaps the alternate and the actual bounds in the geometry of the given cell invoking updateAlternateBounds before carrying out the swap.
updateAlternateBoundsUpdates or sets the alternate bounds in the given geometry for the given cell depending on whether the cell is going to be collapsed.
addAllEdgesReturns an array with the given cells and all edges that are connected to a cell or one of its descendants.
getAllEdgesReturns all edges connected to the given cells or its descendants.
Cell sizing
updateCellSizeUpdates the size of the given cell in the model using cellSizeUpdated.
cellSizeUpdatedUpdates the size of the given cell in the model using getPreferredSizeForCell to get the new size.
getPreferredSizeForCellReturns the preferred width and height of the given mxCell as an mxRectangle.
resizeCellSets the bounds of the given cell using resizeCells.
resizeCellsSets the bounds of the given cells and fires a mxEvent.RESIZE_CELLS event while the transaction is in progress.
cellsResizedSets the bounds of the given cells and fires a mxEvent.CELLS_RESIZED event.
cellResizedResizes the parents recursively so that they contain the complete area of the resized child cell.
resizeChildCellsResizes the child cells of the given cell for the given new geometry with respect to the current geometry of the cell.
constrainChildCellsConstrains the children of the given cell using constrainChild.
scaleCellScales the points, position and size of the given cell according to the given vertical and horizontal scaling factors.
extendParentResizes the parents recursively so that they contain the complete area of the resized child cell.
Cell moving
importCellsClones and inserts the given cells into the graph using the move method and returns the inserted cells.
moveCellsMoves or clones the specified cells and moves the cells or clones by the given amount, adding them to the optional target cell.
cellsMovedMoves the specified cells by the given vector, disconnecting the cells using disconnectGraph is disconnect is true.
translateCellTranslates the geometry of the given cell and stores the new, translated geometry in the model as an atomic change.
getCellContainmentAreaReturns the mxRectangle inside which a cell is to be kept.
getMaximumGraphBoundsReturns the bounds inside which the diagram should be kept as an mxRectangle.
constrainChildKeeps the given cell inside the bounds returned by getCellContainmentArea for its parent, according to the rules defined by getOverlap and isConstrainChild.
resetEdgesResets the control points of the edges that are connected to the given cells if not both ends of the edge are in the given cells array.
resetEdgeResets the control points of the given edge.
Cell connecting and connection constraints
getOutlineConstraintReturns the constraint used to connect to the outline of the given state.
getAllConnectionConstraintsReturns an array of all mxConnectionConstraints for the given terminal.
getConnectionConstraintReturns an mxConnectionConstraint that describes the given connection point.
setConnectionConstraintSets the mxConnectionConstraint that describes the given connection point.
getConnectionPointReturns the nearest point in the list of absolute points or the center of the opposite terminal.
connectCellConnects the specified end of the given edge to the given terminal using cellConnected and fires mxEvent.CONNECT_CELL while the transaction is in progress.
cellConnectedSets the new terminal for the given edge and resets the edge points if resetEdgesOnConnect is true.
disconnectGraphDisconnects the given edges from the terminals which are not in the given array.
Drilldown
getCurrentRootReturns the current root of the displayed cell hierarchy.
getTranslateForRootReturns the translation to be used if the given cell is the root cell as an mxPoint.
isPortReturns true if the given cell is a “port”, that is, when connecting to it, the cell returned by getTerminalForPort should be used as the terminal and the port should be referenced by the ID in either the mxConstants.STYLE_SOURCE_PORT or the or the mxConstants.STYLE_TARGET_PORT.
getTerminalForPortReturns the terminal to be used for a given port.
getChildOffsetForCellReturns the offset to be used for the cells inside the given cell.
enterGroupUses the given cell as the root of the displayed cell hierarchy.
exitGroupChanges the current root to the next valid root in the displayed cell hierarchy.
homeUses the root of the model as the root of the displayed cell hierarchy and selects the previous root.
isValidRootReturns true if the given cell is a valid root for the cell display hierarchy.
Graph display
getGraphBoundsReturns the bounds of the visible graph.
getCellBoundsReturns the scaled, translated bounds for the given cell.
getBoundingBoxFromGeometryReturns the bounding box for the geometries of the vertices in the given array of cells.
refreshClears all cell states or the states for the hierarchy starting at the given cell and validates the graph.
snapSnaps the given numeric value to the grid if gridEnabled is true.
panGraphShifts the graph display by the given amount.
zoomInZooms into the graph by zoomFactor.
zoomOutZooms out of the graph by zoomFactor.
zoomActualResets the zoom and panning in the view.
zoomToZooms the graph to the given scale with an optional boolean center argument, which is passd to zoom.
centerCenters the graph in the container.
zoomZooms the graph using the given factor.
zoomToRectZooms the graph to the specified rectangle.
fitScales the graph such that the complete diagram fits into <container> and returns the current scale in the view.
scrollCellToVisiblePans the graph so that it shows the given cell.
scrollRectToVisiblePans the graph so that it shows the given rectangle.
getCellGeometryReturns the mxGeometry for the given cell.
isCellVisibleReturns true if the given cell is visible in this graph.
isCellCollapsedReturns true if the given cell is collapsed in this graph.
isCellConnectableReturns true if the given cell is connectable in this graph.
isOrthogonalReturns true if perimeter points should be computed such that the resulting edge has only horizontal or vertical segments.
isLoopReturns true if the given cell state is a loop.
isCloneEventReturns true if the given event is a clone event.
isToggleEventReturns true if the given event is a toggle event.
isGridEnabledEventReturns true if the given mouse event should be aligned to the grid.
isConstrainedEventReturns true if the given mouse event should be aligned to the grid.
Validation
validationAlertDisplays the given validation error in a dialog.
isEdgeValidChecks if the return value of getEdgeValidationError for the given arguments is null.
getEdgeValidationErrorReturns the validation error message to be displayed when inserting or changing an edges’ connectivity.
validateEdgeHook method for subclassers to return an error message for the given edge and terminals.
validateGraphValidates the graph by validating each descendant of the given cell or the root of the model.
getCellValidationErrorChecks all multiplicities that cannot be enforced while the graph is being modified, namely, all multiplicities that require a minimum of 1 edge.
validateCellHook method for subclassers to return an error message for the given cell and validation context.
Graph appearance
getBackgroundImageReturns the backgroundImage as an mxImage.
setBackgroundImageSets the new backgroundImage.
getFoldingImageReturns the mxImage used to display the collapsed state of the specified cell state.
convertValueToStringReturns the textual representation for the given cell.
getLabelReturns a string or DOM node that represents the label for the given cell.
isHtmlLabelReturns true if the label must be rendered as HTML markup.
isHtmlLabelsReturns htmlLabels.
setHtmlLabelsSets htmlLabels.
isWrappingThis enables wrapping for HTML labels.
isLabelClippedReturns true if the overflow portion of labels should be hidden.
getTooltipReturns the string or DOM node that represents the tooltip for the given state, node and coordinate pair.
getTooltipForCellReturns the string or DOM node to be used as the tooltip for the given cell.
getCursorForMouseEventReturns the cursor value to be used for the CSS of the shape for the given event.
getCursorForCellReturns the cursor value to be used for the CSS of the shape for the given cell.
getStartSizeReturns the start size of the given swimlane, that is, the width or height of the part that contains the title, depending on the horizontal style.
getImageReturns the image URL for the given cell state.
getVerticalAlignReturns the vertical alignment for the given cell state.
getIndicatorColorReturns the indicator color for the given cell state.
getIndicatorGradientColorReturns the indicator gradient color for the given cell state.
getIndicatorShapeReturns the indicator shape for the given cell state.
getIndicatorImageReturns the indicator image for the given cell state.
getBorderReturns the value of border.
setBorderSets the value of border.
isSwimlaneReturns true if the given cell is a swimlane in the graph.
Graph behaviour
isResizeContainerReturns resizeContainer.
setResizeContainerSets resizeContainer.
isEnabledReturns true if the graph is enabled.
setEnabledSpecifies if the graph should allow any interactions.
isEscapeEnabledReturns escapeEnabled.
setEscapeEnabledSets escapeEnabled.
isInvokesStopCellEditingReturns invokesStopCellEditing.
setInvokesStopCellEditingSets invokesStopCellEditing.
isEnterStopsCellEditingReturns enterStopsCellEditing.
setEnterStopsCellEditingSets enterStopsCellEditing.
isCellLockedReturns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
isCellsLockedReturns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
setLockedSets if any cell may be moved, sized, bended, disconnected, edited or selected.
getCloneableCellsReturns the cells which may be exported in the given array of cells.
isCellCloneableReturns true if the given cell is cloneable.
isCellsCloneableReturns cellsCloneable, that is, if the graph allows cloning of cells by using control-drag.
setCellsCloneableSpecifies if the graph should allow cloning of cells by holding down the control key while cells are being moved.
getExportableCellsReturns the cells which may be exported in the given array of cells.
canExportCellReturns true if the given cell may be exported to the clipboard.
getImportableCellsReturns the cells which may be imported in the given array of cells.
canImportCellReturns true if the given cell may be imported from the clipboard.
isCellSelectableReturns true if the given cell is selectable.
isCellsSelectableReturns cellsSelectable.
setCellsSelectableSets cellsSelectable.
getDeletableCellsReturns the cells which may be exported in the given array of cells.
isCellDeletableReturns true if the given cell is moveable.
isCellsDeletableReturns cellsDeletable.
setCellsDeletableSets cellsDeletable.
isLabelMovableReturns true if the given edges’s label is moveable.
isCellRotatableReturns true if the given cell is rotatable.
getMovableCellsReturns the cells which are movable in the given array of cells.
isCellMovableReturns true if the given cell is moveable.
isCellsMovableReturns cellsMovable.
setCellsMovableSpecifies if the graph should allow moving of cells.
isGridEnabledReturns gridEnabled as a boolean.
setGridEnabledSpecifies if the grid should be enabled.
isPortsEnabledReturns portsEnabled as a boolean.
setPortsEnabledSpecifies if the ports should be enabled.
getGridSizeReturns gridSize.
setGridSizeSets gridSize.
getToleranceReturns tolerance.
setToleranceSets tolerance.
isVertexLabelsMovableReturns vertexLabelsMovable.
setVertexLabelsMovableSets vertexLabelsMovable.
isEdgeLabelsMovableReturns edgeLabelsMovable.
isEdgeLabelsMovableSets edgeLabelsMovable.
isSwimlaneNestingReturns swimlaneNesting as a boolean.
setSwimlaneNestingSpecifies if swimlanes can be nested by drag and drop.
isSwimlaneSelectionEnabledReturns swimlaneSelectionEnabled as a boolean.
setSwimlaneSelectionEnabledSpecifies if swimlanes should be selected if the mouse is released over their content area.
isMultigraphReturns multigraph as a boolean.
setMultigraphSpecifies if the graph should allow multiple connections between the same pair of vertices.
isAllowLoopsReturns allowLoops as a boolean.
setAllowDanglingEdgesSpecifies if dangling edges are allowed, that is, if edges are allowed that do not have a source and/or target terminal defined.
isAllowDanglingEdgesReturns allowDanglingEdges as a boolean.
setConnectableEdgesSpecifies if edges should be connectable.
isConnectableEdgesReturns connectableEdges as a boolean.
setCloneInvalidEdgesSpecifies if edges should be inserted when cloned but not valid wrt.
isCloneInvalidEdgesReturns cloneInvalidEdges as a boolean.
setAllowLoopsSpecifies if loops are allowed.
isDisconnectOnMoveReturns disconnectOnMove as a boolean.
setDisconnectOnMoveSpecifies if edges should be disconnected when moved.
isDropEnabledReturns dropEnabled as a boolean.
setDropEnabledSpecifies if the graph should allow dropping of cells onto or into other cells.
isSplitEnabledReturns splitEnabled as a boolean.
setSplitEnabledSpecifies if the graph should allow dropping of cells onto or into other cells.
isCellResizableReturns true if the given cell is resizable.
isCellsResizableReturns cellsResizable.
setCellsResizableSpecifies if the graph should allow resizing of cells.
isTerminalPointMovableReturns true if the given terminal point is movable.
isCellBendableReturns true if the given cell is bendable.
isCellsBendableReturns <cellsBenadable>.
setCellsBendableSpecifies if the graph should allow bending of edges.
isCellEditableReturns true if the given cell is editable.
isCellsEditableReturns cellsEditable.
setCellsEditableSpecifies if the graph should allow in-place editing for cell labels.
isCellDisconnectableReturns true if the given cell is disconnectable from the source or target terminal.
isCellsDisconnectableReturns cellsDisconnectable.
setCellsDisconnectableSets cellsDisconnectable.
isValidSourceReturns true if the given cell is a valid source for new connections.
isValidTargetReturns isValidSource for the given cell.
isValidConnectionReturns true if the given target cell is a valid target for source.
setConnectableSpecifies if the graph should allow new connections.
isConnectableReturns true if the <connectionHandler> is enabled.
setTooltipsSpecifies if tooltips should be enabled.
setPanningSpecifies if panning should be enabled.
isEditingReturns true if the given cell is currently being edited.
isAutoSizeCellReturns true if the size of the given cell should automatically be updated after a change of the label.
isAutoSizeCellsReturns autoSizeCells.
setAutoSizeCellsSpecifies if cell sizes should be automatically updated after a label change.
isExtendParentReturns true if the parent of the given cell should be extended if the child has been resized so that it overlaps the parent.
isExtendParentsReturns extendParents.
setExtendParentsSets extendParents.
isExtendParentsOnAddReturns extendParentsOnAdd.
setExtendParentsOnAddSets extendParentsOnAdd.
isExtendParentsOnAddReturns extendParentsOnAdd.
setExtendParentsOnAddSets extendParentsOnAdd.
isRecursiveResizeReturns recursiveResize.
setRecursiveResizeSets recursiveResize.
isConstrainChildReturns true if the given cell should be kept inside the bounds of its parent according to the rules defined by getOverlap and isAllowOverlapParent.
isConstrainChildrenReturns constrainChildren.
setConstrainChildrenSets constrainChildren.
setConstrainChildrenOnResizeSets constrainChildrenOnResize.
isConstrainChildrenOnResizeReturns constrainChildrenOnResize.
isConstrainChildrenReturns allowNegativeCoordinates.
setConstrainChildrenSets allowNegativeCoordinates.
getOverlapReturns a decimal number representing the amount of the width and height of the given cell that is allowed to overlap its parent.
isAllowOverlapParentReturns true if the given cell is allowed to be placed outside of the parents area.
getFoldableCellsReturns the cells which are movable in the given array of cells.
isCellFoldableReturns true if the given cell is foldable.
isValidDropTargetReturns true if the given cell is a valid drop target for the specified cells.
isSplitTargetReturns true if the given edge may be splitted into two edges with the given cell as a new terminal between the two.
getDropTargetReturns the given cell if it is a drop target for the given cells or the nearest ancestor that may be used as a drop target for the given cells.
Cell retrieval
getDefaultParentReturns defaultParent or mxGraphView.currentRoot or the first child child of mxGraphModel.root if both are null.
setDefaultParentSets the defaultParent to the given cell.
getSwimlaneReturns the nearest ancestor of the given cell which is a swimlane, or the given cell, if it is itself a swimlane.
getSwimlaneAtReturns the bottom-most swimlane that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
getCellAtReturns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy starting at the given parent.
intersectsReturns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
hitsSwimlaneContentReturns true if the given coordinate pair is inside the content are of the given swimlane.
getChildVerticesReturns the visible child vertices of the given parent.
getChildEdgesReturns the visible child edges of the given parent.
getChildCellsReturns the visible child vertices or edges in the given parent.
getConnectionsReturns all visible edges connected to the given cell without loops.
getIncomingEdgesReturns the visible incoming edges for the given cell.
getOutgoingEdgesReturns the visible outgoing edges for the given cell.
getEdgesReturns the incoming and/or outgoing edges for the given cell.
isValidAncestorReturns whether or not the specified parent is a valid ancestor of the specified cell, either direct or indirectly based on whether ancestor recursion is enabled.
getOppositesReturns all distinct visible opposite cells for the specified terminal on the given edges.
getEdgesBetweenReturns the edges between the given source and target.
getPointForEventReturns an mxPoint representing the given event in the unscaled, non-translated coordinate space of <container> and applies the grid.
getCellsReturns the child vertices and edges of the given parent that are contained in the given rectangle.
getCellsBeyondReturns the children of the given parent that are contained in the halfpane from the given point (x0, y0) rightwards and/or downwards depending on rightHalfpane and bottomHalfpane.
findTreeRootsReturns all children in the given parent which do not have incoming edges.
traverseTraverses the (directed) graph invoking the given function for each visited vertex and edge.
Selection
isCellSelectedReturns true if the given cell is selected.
isSelectionEmptyReturns true if the selection is empty.
clearSelectionClears the selection using mxGraphSelectionModel.clear.
getSelectionCountReturns the number of selected cells.
getSelectionCellReturns the first cell from the array of selected mxCells.
getSelectionCellsReturns the array of selected mxCells.
setSelectionCellSets the selection cell.
setSelectionCellsSets the selection cell.
addSelectionCellAdds the given cell to the selection.
addSelectionCellsAdds the given cells to the selection.
removeSelectionCellRemoves the given cell from the selection.
removeSelectionCellsRemoves the given cells from the selection.
selectRegionSelects and returns the cells inside the given rectangle for the specified event.
selectNextCellSelects the next cell.
selectPreviousCellSelects the previous cell.
selectParentCellSelects the parent cell.
selectChildCellSelects the first child cell.
selectCellSelects the next, parent, first child or previous cell, if all arguments are false.
selectAllSelects all children of the given parent cell or the children of the default parent if no parent is specified.
selectVerticesSelect all vertices inside the given parent or the default parent.
selectVerticesSelect all vertices inside the given parent or the default parent.
selectCellsSelects all vertices and/or edges depending on the given boolean arguments recursively, starting at the given parent or the default parent if no parent is specified.
selectCellForEventSelects the given cell by either adding it to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
selectCellsForEventSelects the given cells by either adding them to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
Selection state
createHandlerCreates a new handler for the given cell state.
createVertexHandlerHooks to create a new mxVertexHandler for the given mxCellState.
createEdgeHandlerHooks to create a new mxEdgeHandler for the given mxCellState.
createEdgeSegmentHandlerHooks to create a new <mxEdgeSegmentHandler> for the given mxCellState.
createElbowEdgeHandlerHooks to create a new mxElbowEdgeHandler for the given mxCellState.
Graph events
addMouseListenerAdds a listener to the graph event dispatch loop.
removeMouseListenerRemoves the specified graph listener.
updateMouseEventSets the graphX and graphY properties if the given mxMouseEvent if required and returned the event.
getStateForEventReturns the state for the given touch event.
isEventIgnoredReturns true if the event should be ignored in fireMouseEvent.
isSyntheticEventIgnoredHook for ignoring synthetic mouse events after touchend in Firefox.
isEventSourceIgnoredReturns true if the event should be ignored in fireMouseEvent.
fireMouseEventDispatches the given event in the graph event dispatch loop.
consumeMouseEventDestroys the graph and all its resources.
fireGestureEventDispatches a mxEvent.GESTURE event.
destroyDestroys the graph and all its resources.

Events

@@ -1287,9 +1287,9 @@ graph.traverse(cell, false, function(vertex, edge)

Selection state

-

createHandler

mxGraph.prototype.createHandler = function(state)

Creates a new handler for the given cell state.  This implementation returns a new mxEdgeHandler of the corresponding cell is an edge, otherwise it returns an mxVertexHandler.

Parameters

statemxCellState whose handler should be created.
+

createHandler

mxGraph.prototype.createHandler = function(state)

Creates a new handler for the given cell state.  This implementation returns a new mxEdgeHandler of the corresponding cell is an edge, otherwise it returns an mxVertexHandler.

Parameters

statemxCellState whose handler should be created.
-

createVertexHandler

mxGraph.prototype.createVertexHandler = function(state)

Hooks to create a new mxVertexHandler for the given mxCellState.

Parameters

statemxCellState to create the handler for.
+

createVertexHandler

mxGraph.prototype.createVertexHandler = function(state)

Hooks to create a new mxVertexHandler for the given mxCellState.

Parameters

statemxCellState to create the handler for.

createEdgeHandler

mxGraph.prototype.createEdgeHandler = function(state)

Hooks to create a new mxEdgeHandler for the given mxCellState.

Parameters

statemxCellState to create the handler for.
@@ -1347,7 +1347,7 @@ graph.traverse(cell, false, function(vertex, edge) - diff --git a/docs/js-api/files/view/mxGraphSelectionModel-js.html b/docs/js-api/files/view/mxGraphSelectionModel-js.html index 3a316c150..64a19e47d 100644 --- a/docs/js-api/files/view/mxGraphSelectionModel-js.html +++ b/docs/js-api/files/view/mxGraphSelectionModel-js.html @@ -87,7 +87,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/view/mxGraphView-js.html b/docs/js-api/files/view/mxGraphView-js.html index 260c27d23..06a4fe892 100644 --- a/docs/js-api/files/view/mxGraphView-js.html +++ b/docs/js-api/files/view/mxGraphView-js.html @@ -269,7 +269,7 @@ mxGraphView.prototype.getPerimeterBounds = function(terminal, edge, isSource) - diff --git a/docs/js-api/files/view/mxLayoutManager-js.html b/docs/js-api/files/view/mxLayoutManager-js.html index a2487c468..d41ed7274 100644 --- a/docs/js-api/files/view/mxLayoutManager-js.html +++ b/docs/js-api/files/view/mxLayoutManager-js.html @@ -73,7 +73,7 @@ layoutMgr.getLayout = function(cell) - diff --git a/docs/js-api/files/view/mxMultiplicity-js.html b/docs/js-api/files/view/mxMultiplicity-js.html index 8c7a4b14f..7f503e427 100644 --- a/docs/js-api/files/view/mxMultiplicity-js.html +++ b/docs/js-api/files/view/mxMultiplicity-js.html @@ -58,7 +58,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/view/mxOutline-js.html b/docs/js-api/files/view/mxOutline-js.html index 6f5de01bd..c7295e1b3 100644 --- a/docs/js-api/files/view/mxOutline-js.html +++ b/docs/js-api/files/view/mxOutline-js.html @@ -109,7 +109,7 @@ if (!nav.suspended) - diff --git a/docs/js-api/files/view/mxPerimeter-js.html b/docs/js-api/files/view/mxPerimeter-js.html index 6c2910642..5af0ac374 100644 --- a/docs/js-api/files/view/mxPerimeter-js.html +++ b/docs/js-api/files/view/mxPerimeter-js.html @@ -38,7 +38,7 @@ style[mxConstants.STYLE_PERIMETER] = mxPerimeter.CustomPerimeter;Generated by Natural Docs
- diff --git a/docs/js-api/files/view/mxPrintPreview-js.html b/docs/js-api/files/view/mxPrintPreview-js.html index 31e6713fa..24ecfeb0e 100644 --- a/docs/js-api/files/view/mxPrintPreview-js.html +++ b/docs/js-api/files/view/mxPrintPreview-js.html @@ -83,7 +83,7 @@ preview.open();

y0

mxPrintPreview.prototype.y0

Holds the vertical offset of the output.

-

autoOrigin

mxPrintPreview.prototype.autoOrigin

Specifies if the origin should be automatically computed based on the top, left corner of the actual diagram contents.  If this is set to false then the values for x0 and y0 will be overridden in open.  Default is true.

+

autoOrigin

mxPrintPreview.prototype.autoOrigin

Specifies if the origin should be automatically computed based on the top, left corner of the actual diagram contents.  The required offset will be added to x0 and y0 in open.  Default is true.

printOverlays

mxPrintPreview.prototype.printOverlays

Specifies if overlays should be printed.  Default is false.

@@ -135,7 +135,7 @@ preview.open();
- diff --git a/docs/js-api/files/view/mxSpaceManager-js.html b/docs/js-api/files/view/mxSpaceManager-js.html index dd1fc6f73..54b2cf063 100644 --- a/docs/js-api/files/view/mxSpaceManager-js.html +++ b/docs/js-api/files/view/mxSpaceManager-js.html @@ -75,7 +75,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/view/mxStyleRegistry-js.html b/docs/js-api/files/view/mxStyleRegistry-js.html index 47e426fcb..cab87b744 100644 --- a/docs/js-api/files/view/mxStyleRegistry-js.html +++ b/docs/js-api/files/view/mxStyleRegistry-js.html @@ -31,7 +31,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/view/mxStylesheet-js.html b/docs/js-api/files/view/mxStylesheet-js.html index bf1fc2f60..835ea2d4f 100644 --- a/docs/js-api/files/view/mxStylesheet-js.html +++ b/docs/js-api/files/view/mxStylesheet-js.html @@ -48,7 +48,7 @@ graph.getStylesheet().putCellStyle('rounded', style);

In th

- diff --git a/docs/js-api/files/view/mxSwimlaneManager-js.html b/docs/js-api/files/view/mxSwimlaneManager-js.html index 61d52c8c5..0de9d9ad7 100644 --- a/docs/js-api/files/view/mxSwimlaneManager-js.html +++ b/docs/js-api/files/view/mxSwimlaneManager-js.html @@ -75,7 +75,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/files/view/mxTemporaryCellStates-js.html b/docs/js-api/files/view/mxTemporaryCellStates-js.html index 66f23df50..aea2203dc 100644 --- a/docs/js-api/files/view/mxTemporaryCellStates-js.html +++ b/docs/js-api/files/view/mxTemporaryCellStates-js.html @@ -37,7 +37,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Classes.html b/docs/js-api/index/Classes.html index 27ab29bdd..9f61c977b 100644 --- a/docs/js-api/index/Classes.html +++ b/docs/js-api/index/Classes.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Classes2.html b/docs/js-api/index/Classes2.html index 296a40e37..3bad3c5b3 100644 --- a/docs/js-api/index/Classes2.html +++ b/docs/js-api/index/Classes2.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Cookies.html b/docs/js-api/index/Cookies.html index 28303759b..2be46ce04 100644 --- a/docs/js-api/index/Cookies.html +++ b/docs/js-api/index/Cookies.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Events.html b/docs/js-api/index/Events.html index 32315ec34..14ec8cbb0 100644 --- a/docs/js-api/index/Events.html +++ b/docs/js-api/index/Events.html @@ -85,7 +85,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Files.html b/docs/js-api/index/Files.html index e124061c4..daad2bdc3 100644 --- a/docs/js-api/index/Files.html +++ b/docs/js-api/index/Files.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions.html b/docs/js-api/index/Functions.html index f141f6bb5..8f5cfa91e 100644 --- a/docs/js-api/index/Functions.html +++ b/docs/js-api/index/Functions.html @@ -13,7 +13,7 @@ if (browserType) {document.write("
");if (browserV
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 activate, mxWindow
 add
 addAction
 addActionCombo, mxDefaultToolbar
 addActionOption, mxDefaultToolbar
 addActions, mxEditor
 addAlias, mxCodecRegistry
 addAllEdges, mxGraph
 addBreak, mxToolbar
 addButton, mxLog
 addButtons, mxForm
 addCell
 addCellOverlay, mxGraph
 addCells
 addCheckbox, mxForm
 addCombo
 addEdge, mxGraph
 addEdges, mxCellStatePreview
 addField, mxForm
 addGestureListeners, mxEvent
 addGraphFragment, mxPrintPreview
 addImageBundle, mxGraph
 addItem
 addItems, mxDefaultPopupMenu
 addLine, mxToolbar
 addListener
 addMarker, mxMarker
 addMode
 addMouseListener, mxGraph
 addNode
 addObjectValue, mxObjectCodec
 addOp, mxAbstractCanvas2D
 addOption
 addPoint, mxEdgeHandler
 addPointAt, mxEdgeHandler
 addPoints, mxShape
 addPrototype, mxDefaultToolbar
 addSelectionCell, mxGraph
 addSelectionCells, mxGraph
 addSeparator
 addStencil, mxStencilRegistry
 addStylename, mxUtils
 addSwitchMode, mxToolbar
 addTemplate, mxEditor
 addText, mxForm
 addTextarea, mxForm
 addTextBackground, mxSvgCanvas2D
 addTransparentBackgroundFilter, mxUtils
 addVertex, mxEditor
 addWaypoint, mxConnectionHandler
 adjustParents, mxCompactTreeLayout
 afterDecode
 afterEncode
 alert, mxUtils
 alignCells, mxGraph
 allowEval, mxStencil
 animateCell, mxMorphing
 animateChanges
 apply
 arcTo, mxAbstractCanvas2D
 arcToCurves, mxUtils
 arrangeGroups, mxGraphLayout
 attachParent, mxCompactTreeLayout
 augmentBoundingBox
 autoSizeCell, mxGraph
 avoid, mxEdgeLabelLayout
-
mxWindow.prototype.activate = function()
Puts the window on top of all other windows.
mxGraphModel.prototype.add = function(parent,
child,
index)
Adds the specified child to the parent at the given index using mxChildChange and adds the change to the current transaction.
mxRectangle.prototype.add = function(rect)
Adds the given rectangle to this rectangle.
add: function(basename,
lan)
Adds the default and current language properties file for the specified basename.
mxUndoableEdit.prototype.add = function(change)
Adds the specified change to this edit.
mxDefaultPopupMenu.prototype.addAction = function(menu,
editor,
lab,
icon,
funct,
action,
cell,
parent,
iconCls)
Helper method to bind an action to a new menu item.
mxEditor.prototype.addAction = function (actionname,
funct)
Binds the specified actionname to the specified function.
mxDefaultToolbar.prototype.addActionCombo = function(title)
Helper method to invoke mxToolbar.addActionCombo on toolbar using the given title and return the resulting DOM node.
mxDefaultToolbar.prototype.addActionOption = function(combo,
title,
action)
Binds the given action to a option with the specified label in the given combo.
mxEditor.prototype.addActions = function ()
Adds the built-in actions to the editor instance.
addAlias: function(classname,
codecname)
Adds an alias for mapping a classname to a codecname.
mxGraph.prototype.addAllEdges = function(cells)
Returns an array with the given cells and all edges that are connected to a cell or one of its descendants.
mxToolbar.prototype.addBreak = function()
Adds a break to the container.
addButton: function(lab,
funct)
Adds a button to the console using the given label and function.
mxForm.prototype.addButtons = function(okFunct,
cancelFunct)
Helper method to add an OK and Cancel button using the respective functions.
mxGraph.prototype.addCell = function(cell,
parent,
index,
source,
target)
Adds the cell to the parent and connects it to the given source and target terminals.
mxGraphSelectionModel.prototype.addCell = function(cell)
Adds the given mxCell to the selection and fires a select event.
mxGraph.prototype.addCellOverlay = function(cell,
overlay)
Adds an mxCellOverlay for the specified cell.
mxGraph.prototype.addCells = function(cells,
parent,
index,
source,
target)
Adds the cells to the parent at the given index, connecting each cell to the optional source and target terminal.
mxGraphSelectionModel.prototype.addCells = function(cells)
Adds the given array of mxCells to the selection and fires a select event.
mxForm.prototype.addCheckbox = function(name,
value)
Adds a checkbox for the given name and value and returns the textfield.
mxDefaultToolbar.prototype.addCombo = function()
Helper method to invoke mxToolbar.addCombo on toolbar and return the resulting DOM node.
mxForm.prototype.addCombo = function(name,
isMultiSelect,
size)
Adds a combo for the given name and returns the combo.
mxToolbar.prototype.addCombo = function(style)
Adds and returns a new SELECT element using the given style.
mxGraph.prototype.addEdge = function(edge,
parent,
source,
target,
index)
Adds the edge to the parent and connects it to the given source and target terminals.
mxCellStatePreview.prototype.addEdges = function(state)
mxForm.prototype.addField = function(name,
input)
Adds a new row with the name and the input field in two columns and returns the given input.
addGestureListeners: function(node,
startListener,
moveListener,
endListener)
Adds the given listeners for touch, mouse and/or pointer events.
mxPrintPreview.prototype.addGraphFragment = function(dx,
dy,
scale,
pageNumber,
div,
clip)
Adds a graph fragment to the given div.
mxGraph.prototype.addImageBundle = function(bundle)
Adds the specified mxImageBundle.
mxDefaultToolbar.prototype.addItem = function(title,
icon,
action,
pressed)
Adds a new item that executes the given action in editor.
mxPopupMenu.prototype.addItem = function(title,
image,
funct,
parent,
iconCls,
enabled)
Adds the given item to the given parent item.
mxToolbar.prototype.addItem = function(title,
icon,
funct,
pressedIcon,
style,
factoryMethod)
Adds the given function as an image with the specified title and icon and returns the new image node.
mxDefaultPopupMenu.prototype.addItems = function(editor,
menu,
cell,
evt,
conditions,
item,
parent)
Recursively adds the given items and all of its children into the given menu.
mxToolbar.prototype.addLine = function()
Adds a horizontal line to the container.
addListener: function()
Binds the function to the specified event on the given element.
mxEventSource.prototype.addListener = function(name,
funct)
Binds the specified function to the given event name.
addMarker: function(type,
funct)
Adds a factory method that updates a given endpoint and returns a function to paint the marker onto the given canvas.
mxDefaultToolbar.prototype.addMode = function(title,
icon,
mode,
pressed,
funct)
Creates an item for selecting the given mode in the editor’s graph.
mxToolbar.prototype.addMode = function(title,
icon,
funct,
pressedIcon,
style,
toggle)
Adds a new item to the toolbar.
mxGraph.prototype.addMouseListener = function(listener)
Adds a listener to the graph event dispatch loop.
mxSvgCanvas2D.prototype.addNode = function(filled,
stroked)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.addNode = function(filled,
stroked)
Adds the current node to the root.
mxObjectCodec.prototype.addObjectValue = function(obj,
fieldname,
value,
template)
Sets the decoded child node as a value of the given object.
mxAbstractCanvas2D.prototype.addOp = function()
Adds the given operation to the path.
mxDefaultToolbar.prototype.addOption = function(combo,
title,
value)
Helper method to invoke mxToolbar.addOption on toolbar and return the resulting DOM node that represents the option.
mxForm.prototype.addOption = function(combo,
label,
value,
isSelected)
Adds an option for the given label to the specified combo.
mxToolbar.prototype.addOption = function(combo,
title,
value)
Adds and returns a new OPTION element inside the given SELECT element.
mxEdgeHandler.prototype.addPoint = function(state,
evt)
Adds a control point for the given state and event.
mxEdgeHandler.prototype.addPointAt = function(state,
x,
y)
Adds a control point at the given point.
mxShape.prototype.addPoints = function(c,
pts,
rounded,
arcSize,
close)
Paints the given points with rounded corners.
mxDefaultToolbar.prototype.addPrototype = function(title,
icon,
ptype,
pressed,
insert,
toggle)
Creates an item for inserting a clone of the specified prototype cell into the editor’s graph.
mxGraph.prototype.addSelectionCell = function(cell)
Adds the given cell to the selection.
mxGraph.prototype.addSelectionCells = function(cells)
Adds the given cells to the selection.
mxDefaultToolbar.prototype.addSeparator = function(icon)
Adds a vertical separator using the optional icon.
mxPopupMenu.prototype.addSeparator = function(parent,
force)
Adds a horizontal separator in the given parent item or the top-level menu if no parent is specified.
mxToolbar.prototype.addSeparator = function(icon)
Adds the specifies image as a separator.
addStencil: function(name,
stencil)
Adds the given mxStencil.
addStylename: function(style,
stylename)
Adds the specified stylename to the given style if it does not already contain the stylename.
mxToolbar.prototype.addSwitchMode = function(title,
icon,
funct,
pressedIcon,
style)
Adds a new selectable item to the toolbar.
mxEditor.prototype.addTemplate = function (name,
template)
Adds the specified template under the given name in templates.
mxForm.prototype.addText = function(name,
value)
Adds a textfield for the given name and value and returns the textfield.
mxForm.prototype.addTextarea = function(name,
value,
rows)
Adds a textarea for the given name and value and returns the textarea.
mxSvgCanvas2D.prototype.addTextBackground = function(node,
str,
x,
y,
w,
h,
align,
valign,
overflow)
Background color and border
addTransparentBackgroundFilter: function(node)
Adds a transparent background to the filter of the given node.
mxEditor.prototype.addVertex = function (parent,
vertex,
x,
y)
Adds the given vertex as a child of parent at the specified x and y coordinate and fires an addVertex event.
mxConnectionHandler.prototype.addWaypointForEvent = function(me)
Adds the waypoint for the given event to waypoints.
mxCompactTreeLayout.prototype.adjustParents = function()
Adjust parent cells whose child geometries have changed.
codec.afterDecode = function(dec,
node,
obj)
Restores object state in the child change.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
mxObjectCodec.prototype.afterDecode = function(dec,
node,
obj)
Hook for subclassers to post-process the object after decoding.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
codec.afterEncode = function(enc,
obj,
node)
Encodes an mxCell and wraps the XML up inside the XML of the user object (inversion).
codec.afterEncode = function(enc,
obj,
node)
Encodes the child recusively and adds the result to the given node.
mxObjectCodec.prototype.afterEncode = function(enc,
obj,
node)
Hook for subclassers to post-process the node for the given object after encoding and return the post-processed node.
alert: function(message)
Displayss the given alert in a new dialog.
mxGraph.prototype.alignCells = function(align,
cells,
param)
Aligns the given cells vertically or horizontally according to the given alignment using the optional parameter as the coordinate.
Static global switch that specifies if the use of eval is allowed for evaluating text content.
mxMorphing.prototype.animateCell = function(cell,
move,
recurse)
Animates the given cell state using mxCellStatePreview.moveState.
animateChanges: function(graph,
changes,
done)
Asynchronous animated move operation.
animateChanges: function(graph,
changes)
See mxEffects.animateChanges.
mxCompactTreeLayout.prototype.apply = function(node,
bounds)
mxImageShape.prototype.apply = function(state)
Overrides mxShape.apply to replace the fill and stroke colors with the respective values from mxConstants.STYLE_IMAGE_BACKGROUND and mxConstants.STYLE_IMAGE_BORDER.
mxShape.prototype.apply = function(state)
Applies the style of the given mxCellState to the shape.
mxText.prototype.apply = function(state)
Extends mxShape to updat the text styles.
mxAbstractCanvas2D.prototype.arcTo = function(rx,
ry,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Adds the given arc to the current path.
arcToCurves: function(x0,
y0,
r1,
r2,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Converts the given arc to a series of curves.
mxGraphLayout.prototype.arrangeGroups = function(cells,
border,
topBorder,
rightBorder,
bottomBorder,
leftBorder)
Shortcut to mxGraph.updateGroupBounds with moveGroup set to true.
mxCompactTreeLayout.prototype.attachParent = function(node,
height)
mxConnector.prototype.augmentBoundingBox = function(bbox)
Augments the bounding box with the strokewidth and shadow offsets.
mxShape.prototype.augmentBoundingBox = function(bbox)
Augments the bounding box with the strokewidth and shadow offsets.
mxGraph.prototype.autoSizeCell = function(cell,
recurse)
Removes the given cells from the graph including all connected edges if includeEdges is true.
mxEdgeLabelLayout.prototype.avoid = function(edge,
vertex)
Places the labels of the given edges.
+
mxWindow.prototype.activate = function()
Puts the window on top of all other windows.
mxGraphModel.prototype.add = function(parent,
child,
index)
Adds the specified child to the parent at the given index using mxChildChange and adds the change to the current transaction.
mxRectangle.prototype.add = function(rect)
Adds the given rectangle to this rectangle.
add: function(basename,
lan)
Adds the default and current language properties file for the specified basename.
mxUndoableEdit.prototype.add = function(change)
Adds the specified change to this edit.
mxDefaultPopupMenu.prototype.addAction = function(menu,
editor,
lab,
icon,
funct,
action,
cell,
parent,
iconCls)
Helper method to bind an action to a new menu item.
mxEditor.prototype.addAction = function (actionname,
funct)
Binds the specified actionname to the specified function.
mxDefaultToolbar.prototype.addActionCombo = function(title)
Helper method to invoke mxToolbar.addActionCombo on toolbar using the given title and return the resulting DOM node.
mxDefaultToolbar.prototype.addActionOption = function(combo,
title,
action)
Binds the given action to a option with the specified label in the given combo.
mxEditor.prototype.addActions = function ()
Adds the built-in actions to the editor instance.
addAlias: function(classname,
codecname)
Adds an alias for mapping a classname to a codecname.
mxGraph.prototype.addAllEdges = function(cells)
Returns an array with the given cells and all edges that are connected to a cell or one of its descendants.
mxToolbar.prototype.addBreak = function()
Adds a break to the container.
addButton: function(lab,
funct)
Adds a button to the console using the given label and function.
mxForm.prototype.addButtons = function(okFunct,
cancelFunct)
Helper method to add an OK and Cancel button using the respective functions.
mxGraph.prototype.addCell = function(cell,
parent,
index,
source,
target)
Adds the cell to the parent and connects it to the given source and target terminals.
mxGraphSelectionModel.prototype.addCell = function(cell)
Adds the given mxCell to the selection and fires a select event.
mxGraph.prototype.addCellOverlay = function(cell,
overlay)
Adds an mxCellOverlay for the specified cell.
mxGraph.prototype.addCells = function(cells,
parent,
index,
source,
target)
Adds the cells to the parent at the given index, connecting each cell to the optional source and target terminal.
mxGraphSelectionModel.prototype.addCells = function(cells)
Adds the given array of mxCells to the selection and fires a select event.
mxForm.prototype.addCheckbox = function(name,
value)
Adds a checkbox for the given name and value and returns the textfield.
mxDefaultToolbar.prototype.addCombo = function()
Helper method to invoke mxToolbar.addCombo on toolbar and return the resulting DOM node.
mxForm.prototype.addCombo = function(name,
isMultiSelect,
size)
Adds a combo for the given name and returns the combo.
mxToolbar.prototype.addCombo = function(style)
Adds and returns a new SELECT element using the given style.
mxGraph.prototype.addEdge = function(edge,
parent,
source,
target,
index)
Adds the edge to the parent and connects it to the given source and target terminals.
mxCellStatePreview.prototype.addEdges = function(state)
mxForm.prototype.addField = function(name,
input)
Adds a new row with the name and the input field in two columns and returns the given input.
addGestureListeners: function(node,
startListener,
moveListener,
endListener)
Adds the given listeners for touch, mouse and/or pointer events.
mxPrintPreview.prototype.addGraphFragment = function(dx,
dy,
scale,
pageNumber,
div,
clip)
Adds a graph fragment to the given div.
mxGraph.prototype.addImageBundle = function(bundle)
Adds the specified mxImageBundle.
mxDefaultToolbar.prototype.addItem = function(title,
icon,
action,
pressed)
Adds a new item that executes the given action in editor.
mxPopupMenu.prototype.addItem = function(title,
image,
funct,
parent,
iconCls,
enabled,
active)
Adds the given item to the given parent item.
mxToolbar.prototype.addItem = function(title,
icon,
funct,
pressedIcon,
style,
factoryMethod)
Adds the given function as an image with the specified title and icon and returns the new image node.
mxDefaultPopupMenu.prototype.addItems = function(editor,
menu,
cell,
evt,
conditions,
item,
parent)
Recursively adds the given items and all of its children into the given menu.
mxToolbar.prototype.addLine = function()
Adds a horizontal line to the container.
addListener: function()
Binds the function to the specified event on the given element.
mxEventSource.prototype.addListener = function(name,
funct)
Binds the specified function to the given event name.
addMarker: function(type,
funct)
Adds a factory method that updates a given endpoint and returns a function to paint the marker onto the given canvas.
mxDefaultToolbar.prototype.addMode = function(title,
icon,
mode,
pressed,
funct)
Creates an item for selecting the given mode in the editor’s graph.
mxToolbar.prototype.addMode = function(title,
icon,
funct,
pressedIcon,
style,
toggle)
Adds a new item to the toolbar.
mxGraph.prototype.addMouseListener = function(listener)
Adds a listener to the graph event dispatch loop.
mxSvgCanvas2D.prototype.addNode = function(filled,
stroked)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.addNode = function(filled,
stroked)
Adds the current node to the root.
mxObjectCodec.prototype.addObjectValue = function(obj,
fieldname,
value,
template)
Sets the decoded child node as a value of the given object.
mxAbstractCanvas2D.prototype.addOp = function()
Adds the given operation to the path.
mxDefaultToolbar.prototype.addOption = function(combo,
title,
value)
Helper method to invoke mxToolbar.addOption on toolbar and return the resulting DOM node that represents the option.
mxForm.prototype.addOption = function(combo,
label,
value,
isSelected)
Adds an option for the given label to the specified combo.
mxToolbar.prototype.addOption = function(combo,
title,
value)
Adds and returns a new OPTION element inside the given SELECT element.
mxEdgeHandler.prototype.addPoint = function(state,
evt)
Adds a control point for the given state and event.
mxEdgeHandler.prototype.addPointAt = function(state,
x,
y)
Adds a control point at the given point.
mxShape.prototype.addPoints = function(c,
pts,
rounded,
arcSize,
close)
Paints the given points with rounded corners.
mxDefaultToolbar.prototype.addPrototype = function(title,
icon,
ptype,
pressed,
insert,
toggle)
Creates an item for inserting a clone of the specified prototype cell into the editor’s graph.
mxGraph.prototype.addSelectionCell = function(cell)
Adds the given cell to the selection.
mxGraph.prototype.addSelectionCells = function(cells)
Adds the given cells to the selection.
mxDefaultToolbar.prototype.addSeparator = function(icon)
Adds a vertical separator using the optional icon.
mxPopupMenu.prototype.addSeparator = function(parent,
force)
Adds a horizontal separator in the given parent item or the top-level menu if no parent is specified.
mxToolbar.prototype.addSeparator = function(icon)
Adds the specifies image as a separator.
addStencil: function(name,
stencil)
Adds the given mxStencil.
addStylename: function(style,
stylename)
Adds the specified stylename to the given style if it does not already contain the stylename.
mxToolbar.prototype.addSwitchMode = function(title,
icon,
funct,
pressedIcon,
style)
Adds a new selectable item to the toolbar.
mxEditor.prototype.addTemplate = function (name,
template)
Adds the specified template under the given name in templates.
mxForm.prototype.addText = function(name,
value)
Adds a textfield for the given name and value and returns the textfield.
mxForm.prototype.addTextarea = function(name,
value,
rows)
Adds a textarea for the given name and value and returns the textarea.
mxSvgCanvas2D.prototype.addTextBackground = function(node,
str,
x,
y,
w,
h,
align,
valign,
overflow)
Background color and border
addTransparentBackgroundFilter: function(node)
Adds a transparent background to the filter of the given node.
mxEditor.prototype.addVertex = function (parent,
vertex,
x,
y)
Adds the given vertex as a child of parent at the specified x and y coordinate and fires an addVertex event.
mxConnectionHandler.prototype.addWaypointForEvent = function(me)
Adds the waypoint for the given event to waypoints.
mxCompactTreeLayout.prototype.adjustParents = function()
Adjust parent cells whose child geometries have changed.
codec.afterDecode = function(dec,
node,
obj)
Restores object state in the child change.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
mxObjectCodec.prototype.afterDecode = function(dec,
node,
obj)
Hook for subclassers to post-process the object after decoding.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
codec.afterEncode = function(enc,
obj,
node)
Encodes an mxCell and wraps the XML up inside the XML of the user object (inversion).
codec.afterEncode = function(enc,
obj,
node)
Encodes the child recusively and adds the result to the given node.
mxObjectCodec.prototype.afterEncode = function(enc,
obj,
node)
Hook for subclassers to post-process the node for the given object after encoding and return the post-processed node.
alert: function(message)
Displayss the given alert in a new dialog.
mxGraph.prototype.alignCells = function(align,
cells,
param)
Aligns the given cells vertically or horizontally according to the given alignment using the optional parameter as the coordinate.
Static global switch that specifies if the use of eval is allowed for evaluating text content.
mxMorphing.prototype.animateCell = function(cell,
move,
recurse)
Animates the given cell state using mxCellStatePreview.moveState.
animateChanges: function(graph,
changes,
done)
Asynchronous animated move operation.
animateChanges: function(graph,
changes)
See mxEffects.animateChanges.
mxCompactTreeLayout.prototype.apply = function(node,
bounds)
mxImageShape.prototype.apply = function(state)
Overrides mxShape.apply to replace the fill and stroke colors with the respective values from mxConstants.STYLE_IMAGE_BACKGROUND and mxConstants.STYLE_IMAGE_BORDER.
mxShape.prototype.apply = function(state)
Applies the style of the given mxCellState to the shape.
mxText.prototype.apply = function(state)
Extends mxShape to updat the text styles.
mxAbstractCanvas2D.prototype.arcTo = function(rx,
ry,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Adds the given arc to the current path.
arcToCurves: function(x0,
y0,
r1,
r2,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Converts the given arc to a series of curves.
mxGraphLayout.prototype.arrangeGroups = function(cells,
border,
topBorder,
rightBorder,
bottomBorder,
leftBorder)
Shortcut to mxGraph.updateGroupBounds with moveGroup set to true.
mxCompactTreeLayout.prototype.attachParent = function(node,
height)
mxConnector.prototype.augmentBoundingBox = function(bbox)
Augments the bounding box with the strokewidth and shadow offsets.
mxShape.prototype.augmentBoundingBox = function(bbox)
Augments the bounding box with the strokewidth and shadow offsets.
mxGraph.prototype.autoSizeCell = function(cell,
recurse)
Removes the given cells from the graph including all connected edges if includeEdges is true.
mxEdgeLabelLayout.prototype.avoid = function(edge,
vertex)
Places the labels of the given edges.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions10.html b/docs/js-api/index/Functions10.html index 4b7082347..7ed808031 100644 --- a/docs/js-api/index/Functions10.html +++ b/docs/js-api/index/Functions10.html @@ -11,17 +11,17 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
J
 join, mxCompactTreeLayout
K
 keyDown, mxKeyHandler
L
 labelChanged, mxGraph
 layeringStage
 layout
 layoutCells, mxLayoutManager
 layoutLeaf, mxCompactTreeLayout
 leave, mxLog
 lineTo
 link
 linkAction, mxUtils
 linkInvoke, mxUtils
 load, mxUtils
 loadInto, mxUtils
 localEdgeProcessing
 lookup, mxCodec
 Loop, mxEdgeStyle
 ltrim, mxUtils
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
J
 join, mxCompactTreeLayout
K
 keyDown, mxKeyHandler
L
 labelChanged, mxGraph
 layeringStage
 layout
 layoutCells, mxLayoutManager
 layoutLeaf, mxCompactTreeLayout
 leave, mxLog
 lineTo
 link
 linkAction, mxUtils
 linkInvoke, mxUtils
 load, mxUtils
 loadInto, mxUtils
 localEdgeProcessing
 lookup, mxCodec
 Loop, mxEdgeStyle
 ltrim, mxUtils
-
mxCompactTreeLayout.prototype.join = function(node)
+
mxCompactTreeLayout.prototype.join = function(node)
-
mxKeyHandler.prototype.keyDown = function(evt)
Handles the event by invoking the function bound to the respective keystroke if mxGraph.isEnabled, isEnabled and isGraphEvent all return true for the given event and mxGraph.isEditing returns false.
+
mxKeyHandler.prototype.keyDown = function(evt)
Handles the event by invoking the function bound to the respective keystroke if mxGraph.isEnabled, isEnabled and isGraphEvent all return true for the given event and mxGraph.isEditing returns false.
-
mxGraph.prototype.labelChanged = function(cell,
value,
evt)
Sets the label of the specified cell to the given value using cellLabelChanged and fires mxEvent.LABEL_CHANGED while the transaction is in progress.
mxHierarchicalLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxSwimlaneLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxCompactTreeLayout.prototype.layout = function(node)
Starts the actual compact tree layout algorithm at the given node.
mxParallelEdgeLayout.prototype.layout = function(parallels)
Lays out the parallel edges in the given array.
mxLayoutManager.prototype.layoutCells = function(cells)
Executes all layouts which have been scheduled during the changes.
mxCompactTreeLayout.prototype.layoutLeaf = function(node)
leave: function(string,
t0)
Writes the specified string to the console if TRACE is true and computes the difference between the current time and t0 in milliseconds.
mxAbstractCanvas2D.prototype.lineTo = function(x,
y)
Draws a line to the given coordinates.
mxXmlCanvas2D.prototype.lineTo = function(x,
y)
Draws a line to the given coordinates.
link: function(rel,
href,
doc)
Adds a link node to the head of the document.
link: function(parent,
text,
funct,
pad)
Adds a hyperlink to the specified parent and invokes the given function when the link is clicked.
linkAction: function(parent,
text,
editor,
action,
pad)
Adds a hyperlink to the specified parent that invokes action on the specified editor.
linkInvoke: function(parent,
text,
editor,
functName,
arg,
pad)
Adds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.
load: function(url)
Loads the specified URL synchronously and returns the mxXmlRequest.
loadInto: function(url,
doc,
onload)
Loads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.
mxCompactTreeLayout.prototype.localEdgeProcessing = function(node)
Moves the specified node and all of its children by the given amount.
mxCoordinateAssignment.prototype.localEdgeProcessing = function(model)
Separates the x position of edges as they connect to vertices
mxCodec.prototype.lookup = function(id)
Hook for subclassers to implement a custom lookup mechanism for cell IDs.
Loop: function (state,
source,
target,
points,
result)
Implements a self-reference, aka.
ltrim: function(str,
chars)
Strips all whitespaces from the beginning of the string.
+
mxGraph.prototype.labelChanged = function(cell,
value,
evt)
Sets the label of the specified cell to the given value using cellLabelChanged and fires mxEvent.LABEL_CHANGED while the transaction is in progress.
mxHierarchicalLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxSwimlaneLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxCompactTreeLayout.prototype.layout = function(node)
Starts the actual compact tree layout algorithm at the given node.
mxParallelEdgeLayout.prototype.layout = function(parallels)
Lays out the parallel edges in the given array.
mxLayoutManager.prototype.layoutCells = function(cells)
Executes all layouts which have been scheduled during the changes.
mxCompactTreeLayout.prototype.layoutLeaf = function(node)
leave: function(string,
t0)
Writes the specified string to the console if TRACE is true and computes the difference between the current time and t0 in milliseconds.
mxAbstractCanvas2D.prototype.lineTo = function(x,
y)
Draws a line to the given coordinates.
mxXmlCanvas2D.prototype.lineTo = function(x,
y)
Draws a line to the given coordinates.
link: function(rel,
href,
doc)
Adds a link node to the head of the document.
link: function(parent,
text,
funct,
pad)
Adds a hyperlink to the specified parent and invokes the given function when the link is clicked.
linkAction: function(parent,
text,
editor,
action,
pad)
Adds a hyperlink to the specified parent that invokes action on the specified editor.
linkInvoke: function(parent,
text,
editor,
functName,
arg,
pad)
Adds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.
load: function(url)
Loads the specified URL synchronously and returns the mxXmlRequest.
loadInto: function(url,
doc,
onload)
Loads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.
mxCompactTreeLayout.prototype.localEdgeProcessing = function(node)
Moves the specified node and all of its children by the given amount.
mxCoordinateAssignment.prototype.localEdgeProcessing = function(model)
Separates the x position of edges as they connect to vertices
mxCodec.prototype.lookup = function(id)
Hook for subclassers to implement a custom lookup mechanism for cell IDs.
Loop: function (state,
source,
target,
points,
result)
Implements a self-reference, aka.
ltrim: function(str,
chars)
Strips all whitespaces from the beginning of the string.
@@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions11.html b/docs/js-api/index/Functions11.html index dc637912c..21a04fa54 100644 --- a/docs/js-api/index/Functions11.html +++ b/docs/js-api/index/Functions11.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
M
 makeDraggable, mxUtils
 map, mxDictionary
 mark
 markCell, mxCellMarker
 maxChainDfs, mxSwimlaneModel
 MedianCellSorter, MedianCellSorter
 medianPos, mxCoordinateAssignment
 medianRank, mxMedianHybridCrossingReduction
 medianValue, mxMedianHybridCrossingReduction
 medianXValue, mxCoordinateAssignment
 merge, mxCompactTreeLayout
 mergeChildren, mxGraphModel
 minNode, mxCoordinateAssignment
 minPath, mxCoordinateAssignment
 mixedModeHtml, mxShape
 mod, mxUtils
 mouseDown
 mouseMove
 mouseUp
 move, mxGuide
 moveCell
 moveCells
 moveChildren, mxVertexHandler
 moveLabel, mxEdgeHandler
 moveNode, mxCompactTreeLayout
 moveState, mxCellStatePreview
 moveTo
 mxAbstractCanvas2D, mxAbstractCanvas2D
 mxActor, mxActor
 mxAnimation, mxAnimation
 mxArrow, mxArrow
 mxAutoSaveManager, mxAutoSaveManager
 mxCell, mxCell
 mxCellAttributeChange, mxCellAttributeChange
 mxCellEditor, mxCellEditor
 mxCellHighlight, mxCellHighlight
 mxCellMarker, mxCellMarker
 mxCellOverlay, mxCellOverlay
 mxCellRenderer, mxCellRenderer
 mxCellState, mxCellState
 mxCellStatePreview, mxCellStatePreview
 mxCellTracker, mxCellTracker
 mxChildChange, mxChildChange
 mxCircleLayout, mxCircleLayout
 mxCloud, mxCloud
 mxCodec, mxCodec
 mxCollapseChange, mxCollapseChange
 mxCompactTreeLayout
 mxCompositeLayout, mxCompositeLayout
 mxConnectionConstraint, mxConnectionConstraint
 mxConnectionHandler, mxConnectionHandler
 mxConnector, mxConnector
 mxConstraintHandler, mxConstraintHandler
 mxCoordinateAssignment, mxCoordinateAssignment
 mxCurrentRootChange
 mxCylinder, mxCylinder
 mxDefaultKeyHandler, mxDefaultKeyHandler
 mxDefaultPopupMenu, mxDefaultPopupMenu
 mxDefaultToolbar, mxDefaultToolbar
 mxDivResizer, mxDivResizer
 mxDoubleEllipse, mxDoubleEllipse
 mxDragSource, mxDragSource
 mxEdgeHandler
 mxEdgeLabelLayout, mxEdgeLabelLayout
 mxEditor, mxEditor
 mxEllipse, mxEllipse
 mxEventObject, mxEventObject
 mxEventSource
 mxForm, mxForm
 mxGenericChangeCodec, mxGenericChangeCodec
 mxGeometry, mxGeometry
 mxGeometryChange, mxGeometryChange
 mxGraph, mxGraph
 mxGraphAbstractHierarchyCell, mxGraphAbstractHierarchyCell
 mxGraphHandler, mxGraphHandler
 mxGraphHierarchyEdge, mxGraphHierarchyEdge
 mxGraphHierarchyModel, mxGraphHierarchyModel
 mxGraphHierarchyNode, mxGraphHierarchyNode
 mxGraphLayout, mxGraphLayout
 mxGraphModel, mxGraphModel
 mxGraphSelectionModel, mxGraphSelectionModel
 mxGraphView, mxGraphView
 mxGuide, mxGuide
 mxHexagon, mxHexagon
 mxHierarchicalLayout, mxHierarchicalLayout
 mxHierarchicalLayoutStage, mxHierarchicalLayoutStage
 mxImage, mxImage
 mxImageExport, mxImageExport
 mxImageShape, mxImageShape
 mxKeyHandler, mxKeyHandler
 mxLabel, mxLabel
 mxLayoutManager, mxLayoutManager
 mxLine, mxLine
 mxMedianHybridCrossingReduction, mxMedianHybridCrossingReduction
 mxMinimumCycleRemover, mxMinimumCycleRemover
 mxMorphing, mxMorphing
 mxMouseEvent, mxMouseEvent
 mxMultiplicity, mxMultiplicity
 mxObjectCodec, mxObjectCodec
 mxOutline, mxOutline
 mxPanningHandler, mxPanningHandler
 mxPartitionLayout, mxPartitionLayout
 mxPoint, mxPoint
 mxPolyline, mxPolyline
 mxPopupMenu, mxPopupMenu
 mxPopupMenuHandler, mxPopupMenuHandler
 mxPrintPreview, mxPrintPreview
 mxRadialTreeLayout, mxRadialTreeLayout
 mxRectangle
 mxRectangleShape, mxRectangleShape
 mxRhombus, mxRhombus
 mxRootChange, mxRootChange
 mxRubberband, mxRubberband
 mxShape, mxShape
 mxSpaceManager, mxSpaceManager
 mxStackLayout, mxStackLayout
 mxStencil, mxStencil
 mxStyleChange, mxStyleChange
 mxStylesheet, mxStylesheet
 mxSvgCanvas2D, mxSvgCanvas2D
 mxSwimlane, mxSwimlane
 mxSwimlaneLayout, mxSwimlaneLayout
 mxSwimlaneManager, mxSwimlaneManager
 mxSwimlaneModel, mxSwimlaneModel
 mxSwimlaneOrdering, mxSwimlaneOrdering
 mxTerminalChange, mxTerminalChange
 mxText, mxText
 mxToolbar, mxToolbar
 mxTooltipHandler, mxTooltipHandler
 mxTriangle, mxTriangle
 mxUndoableEdit, mxUndoableEdit
 mxUndoManager, mxUndoManager
 mxValueChange, mxValueChange
 mxVertexHandler, mxVertexHandler
 mxVisibleChange, mxVisibleChange
 mxWindow, mxWindow
 mxXmlCanvas2D, mxXmlCanvas2D
 mxXmlRequest, mxXmlRequest
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
M
 makeDraggable, mxUtils
 map, mxDictionary
 mark
 markCell, mxCellMarker
 maxChainDfs, mxSwimlaneModel
 MedianCellSorter, MedianCellSorter
 medianPos, mxCoordinateAssignment
 medianRank, mxMedianHybridCrossingReduction
 medianValue, mxMedianHybridCrossingReduction
 medianXValue, mxCoordinateAssignment
 merge, mxCompactTreeLayout
 mergeChildren, mxGraphModel
 minNode, mxCoordinateAssignment
 minPath, mxCoordinateAssignment
 mixedModeHtml, mxShape
 mod, mxUtils
 mouseDown
 mouseMove
 mouseUp
 move, mxGuide
 moveCell
 moveCells
 moveChildren, mxVertexHandler
 moveLabel, mxEdgeHandler
 moveNode, mxCompactTreeLayout
 moveState, mxCellStatePreview
 moveTo
 mxAbstractCanvas2D, mxAbstractCanvas2D
 mxActor, mxActor
 mxAnimation, mxAnimation
 mxArrow, mxArrow
 mxAutoSaveManager, mxAutoSaveManager
 mxCell, mxCell
 mxCellAttributeChange, mxCellAttributeChange
 mxCellEditor, mxCellEditor
 mxCellHighlight, mxCellHighlight
 mxCellMarker, mxCellMarker
 mxCellOverlay, mxCellOverlay
 mxCellRenderer, mxCellRenderer
 mxCellState, mxCellState
 mxCellStatePreview, mxCellStatePreview
 mxCellTracker, mxCellTracker
 mxChildChange, mxChildChange
 mxCircleLayout, mxCircleLayout
 mxCloud, mxCloud
 mxCodec, mxCodec
 mxCollapseChange, mxCollapseChange
 mxCompactTreeLayout
 mxCompositeLayout, mxCompositeLayout
 mxConnectionConstraint, mxConnectionConstraint
 mxConnectionHandler, mxConnectionHandler
 mxConnector, mxConnector
 mxConstraintHandler, mxConstraintHandler
 mxCoordinateAssignment, mxCoordinateAssignment
 mxCurrentRootChange
 mxCylinder, mxCylinder
 mxDefaultKeyHandler, mxDefaultKeyHandler
 mxDefaultPopupMenu, mxDefaultPopupMenu
 mxDefaultToolbar, mxDefaultToolbar
 mxDivResizer, mxDivResizer
 mxDoubleEllipse, mxDoubleEllipse
 mxDragSource, mxDragSource
 mxEdgeHandler
 mxEdgeLabelLayout, mxEdgeLabelLayout
 mxEditor, mxEditor
 mxEllipse, mxEllipse
 mxEventObject, mxEventObject
 mxEventSource
 mxForm, mxForm
 mxGenericChangeCodec, mxGenericChangeCodec
 mxGeometry, mxGeometry
 mxGeometryChange, mxGeometryChange
 mxGraph, mxGraph
 mxGraphAbstractHierarchyCell, mxGraphAbstractHierarchyCell
 mxGraphHandler, mxGraphHandler
 mxGraphHierarchyEdge, mxGraphHierarchyEdge
 mxGraphHierarchyModel, mxGraphHierarchyModel
 mxGraphHierarchyNode, mxGraphHierarchyNode
 mxGraphLayout, mxGraphLayout
 mxGraphModel, mxGraphModel
 mxGraphSelectionModel, mxGraphSelectionModel
 mxGraphView, mxGraphView
 mxGuide, mxGuide
 mxHexagon, mxHexagon
 mxHierarchicalLayout, mxHierarchicalLayout
 mxHierarchicalLayoutStage, mxHierarchicalLayoutStage
 mxImage, mxImage
 mxImageExport, mxImageExport
 mxImageShape, mxImageShape
 mxKeyHandler, mxKeyHandler
 mxLabel, mxLabel
 mxLayoutManager, mxLayoutManager
 mxLine, mxLine
 mxMedianHybridCrossingReduction, mxMedianHybridCrossingReduction
 mxMinimumCycleRemover, mxMinimumCycleRemover
 mxMorphing, mxMorphing
 mxMouseEvent, mxMouseEvent
 mxMultiplicity, mxMultiplicity
 mxObjectCodec, mxObjectCodec
 mxOutline, mxOutline
 mxPanningHandler, mxPanningHandler
 mxPartitionLayout, mxPartitionLayout
 mxPoint, mxPoint
 mxPolyline, mxPolyline
 mxPopupMenu, mxPopupMenu
 mxPopupMenuHandler, mxPopupMenuHandler
 mxPrintPreview, mxPrintPreview
 mxRadialTreeLayout, mxRadialTreeLayout
 mxRectangle
 mxRectangleShape, mxRectangleShape
 mxRhombus, mxRhombus
 mxRootChange, mxRootChange
 mxRubberband, mxRubberband
 mxShape, mxShape
 mxSpaceManager, mxSpaceManager
 mxStackLayout, mxStackLayout
 mxStencil, mxStencil
 mxStyleChange, mxStyleChange
 mxStylesheet, mxStylesheet
 mxSvgCanvas2D, mxSvgCanvas2D
 mxSwimlane, mxSwimlane
 mxSwimlaneLayout, mxSwimlaneLayout
 mxSwimlaneManager, mxSwimlaneManager
 mxSwimlaneModel, mxSwimlaneModel
 mxSwimlaneOrdering, mxSwimlaneOrdering
 mxTerminalChange, mxTerminalChange
 mxText, mxText
 mxToolbar, mxToolbar
 mxTooltipHandler, mxTooltipHandler
 mxTriangle, mxTriangle
 mxUndoableEdit, mxUndoableEdit
 mxUndoManager, mxUndoManager
 mxValueChange, mxValueChange
 mxVertexHandler, mxVertexHandler
 mxVisibleChange, mxVisibleChange
 mxWindow, mxWindow
 mxXmlCanvas2D, mxXmlCanvas2D
 mxXmlRequest, mxXmlRequest
-
makeDraggable: function(element,
graphF,
funct,
dragElement,
dx,
dy,
autoscroll,
scalePreview,
highlightDropTargets,
getDropTarget)
Configures the given DOM element to act as a drag source for the specified graph.
Stores the (key, value) pairs in this dictionary.
Marks the markedState and fires a mark event.
mxCellMarker.prototype.mark = function()
Marks the markedState and fires a mark event.
mxCellMarker.prototype.markCell = function(cell,
color)
Marks the given cell using the given color, or validColor if no color is specified.
mxSwimlaneModel.prototype.maxChainDfs = function(parent,
root,
connectingEdge,
seen,
chainCount)
Performs a depth first search on the internal hierarchy model.
function MedianCellSorter()
Constructs a new median cell sorter.
mxCoordinateAssignment.prototype.medianPos = function(i,
model)
Performs one median positioning sweep in one direction
mxMedianHybridCrossingReduction.prototype.medianRank = function(rankValue,
downwardSweep)
Attempts to minimise the median placement of connected cells on this rank and one of the adjacent ranks
mxMedianHybridCrossingReduction.prototype.medianValue = function(
   connectedCells,
   rankValue
)
Calculates the median rank order positioning for the specified cell using the connected cells on the specified rank.
mxCoordinateAssignment.prototype.medianXValue = function(connectedCells,
rankValue)
Calculates the median position of the connected cell on the specified rank
mxCompactTreeLayout.prototype.merge = function(p1,
p2)
mxGraphModel.prototype.mergeChildren = function(from,
to,
cloneAllEdges)
Merges the children of the given cell into the given target cell inside this model.
mxCoordinateAssignment.prototype.minNode = function(model)
Performs one median positioning sweep in both directions
mxCoordinateAssignment.prototype.minPath = function(graph,
model)
Straightens out chains of virtual nodes where possibleacade to those stored after this layout processing step has completed.
Allow optimization by replacing VML with HTML.
mod: function(n,
m)
Returns the remainder of division of n by m.
mxCellTracker.prototype.mouseDown = function(sender,
me)
Ignores the event.
mxConnectionHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a new connection.
mxDragSource.prototype.mouseDown = function(evt)
Returns the drop target for the given graph and coordinates.
mxEdgeHandler.prototype.mouseDown = function(sender,
me)
Handles the event by checking if a special element of the handler was clicked, in which case the index parameter is non-null.
mxGraphHandler.prototype.mouseDown = function(sender,
me)
Handles the event by selecing the given cell and creating a handle for it.
mxOutline.prototype.mouseDown = function(sender,
me)
Handles the event by starting a translation or zoom.
mxPanningHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating the panning.
mxPopupMenuHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating the panning.
mxRubberband.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a rubberband selection.
mxSelectionCellsHandler.prototype.mouseDown = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a rubberband selection.
mxVertexHandler.prototype.mouseDown = function(sender,
me)
Handles the event if a handle has been clicked.
mxCellTracker.prototype.mouseMove = function(sender,
me)
Handles the event by highlighting the cell under the mousepointer if it is over the hotspot region of the cell.
mxConnectionHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview edge or by highlighting a possible source or target terminal.
mxDragSource.prototype.mouseMove = function(evt)
Gets the graph for the given event using getGraphForEvent, updates the currentGraph, calling dragEnter and dragExit on the new and old graph, respectively, and invokes dragOver if currentGraph is not null.
mxEdgeHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview.
mxGraphHandler.prototype.mouseMove = function(sender,
me)
Handles the event by highlighting possible drop targets and updating the preview.
mxOutline.prototype.mouseMove = function(sender,
me)
Handles the event by previewing the viewrect in graph and updating the rectangle that represents the viewrect in the outline.
mxPanningHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the panning on the graph.
mxPopupMenuHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the panning on the graph.
mxRubberband.prototype.mouseMove = function(sender,
me)
Handles the event by updating therubberband selection.
mxSelectionCellsHandler.prototype.mouseMove = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the rubberband selection.
mxVertexHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview.
mxCellTracker.prototype.mouseUp = function(sender,
me)
Handles the event by reseting the highlight.
mxConnectionHandler.prototype.mouseUp = function(sender,
me)
Handles the event by inserting the new connection.
mxDragSource.prototype.mouseUp = function(evt)
Processes the mouse up event and invokes drop, dragExit and stopDrag as required.
mxEdgeHandler.prototype.mouseUp = function(sender,
me)
Handles the event to applying the previewed changes on the edge by using moveLabel, connect or changePoints.
mxGraphHandler.prototype.mouseUp = function(sender,
me)
Handles the event by applying the changes to the selection cells.
mxOutline.prototype.mouseUp = function(sender,
me)
Handles the event by applying the translation or zoom to graph.
mxPanningHandler.prototype.mouseUp = function(sender,
me)
Handles the event by setting the translation on the view or showing the popupmenu.
mxPopupMenuHandler.prototype.mouseUp = function(sender,
me)
Handles the event by setting the translation on the view or showing the popupmenu.
mxRubberband.prototype.mouseUp = function(sender,
me)
Handles the event by selecting the region of the rubberband using mxGraph.selectRegion.
mxSelectionCellsHandler.prototype.mouseUp = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseUp = function(sender,
me)
Handles the event by resetting the tooltip timer or hiding the existing tooltip.
mxVertexHandler.prototype.mouseUp = function(sender,
me)
Handles the event by applying the changes to the geometry.
mxGuide.prototype.move = function(bounds,
delta,
gridEnabled)
Moves the bounds by the given mxPoint and returnt the snapped point.
mxCompositeLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell by calling move on master or the first layout in layouts.
mxGraphLayout.prototype.moveCell = function(cell,
x,
y)
Notified when a cell is being moved in a parent that has automatic layout to update the cell state (eg.
mxPartitionLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell.
mxStackLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell.
mxGraph.prototype.moveCells = function(cells,
dx,
dy,
clone,
target,
evt)
Moves or clones the specified cells and moves the cells or clones by the given amount, adding them to the optional target cell.
mxGraphHandler.prototype.moveCells = function(cells,
dx,
dy,
clone,
target,
evt)
Moves the given cells by the specified amount.
mxVertexHandler.prototype.moveChildren = function(cell,
dx,
dy)
Moves the children of the given cell by the given vector.
mxEdgeHandler.prototype.moveLabel = function(edgeState,
x,
y)
Changes the coordinates for the label of the given edge.
mxCompactTreeLayout.prototype.moveNode = function(node,
dx,
dy)
Moves the specified node and all of its children by the given amount.
mxCellStatePreview.prototype.moveState = function(state,
dx,
dy,
add,
includeEdges)
mxAbstractCanvas2D.prototype.moveTo = function(x,
y)
Moves the current path the given coordinates.
mxXmlCanvas2D.prototype.moveTo = function(x,
y)
Moves the current path the given point.
function mxAbstractCanvas2D()
Constructs a new abstract canvas.
function mxActor(bounds,
fill,
stroke,
strokewidth)
Constructs a new actor shape.
function mxAnimation(delay)
Constructs an animation.
function mxArrow(points,
fill,
stroke,
strokewidth,
arrowWidth,
spacing,
endSize)
Constructs a new arrow shape.
function mxAutoSaveManager(graph)
Constructs a new automatic layout for the given graph.
function mxCell(value,
geometry,
style)
Constructs a new cell to be used in a graph model.
function mxCellAttributeChange(cell,
attribute,
value)
Constructs a change of a attribute of the DOM node stored as the value of the given mxCell.
function mxCellEditor(graph)
Constructs a new in-place editor for the specified graph.
function mxCellHighlight(graph,
highlightColor,
strokeWidth,
dashed)
Constructs a cell highlight.
function mxCellMarker(graph,
validColor,
invalidColor,
hotspot)
Constructs a new cell marker.
function mxCellOverlay(image,
tooltip,
align,
verticalAlign,
offset,
cursor)
Constructs a new overlay using the given image and tooltip.
function mxCellRenderer()
arrow, rectangle, ellipse, rhombus, image, line, label, cylinder, swimlane, connector, actor and cloud.
function mxCellState(view,
cell,
style)
Constructs a new object that represents the current state of the given cell in the specified view.
function mxCellStatePreview(graph)
Constructs a move preview for the given graph.
function mxCellTracker(graph,
color,
funct)
Constructs an event handler that highlights cells.
function mxChildChange(model,
parent,
child,
index)
Constructs a change of a child in the specified model.
function mxCircleLayout(graph,
radius)
Constructs a new circular layout for the specified radius.
function mxCloud(bounds,
fill,
stroke,
strokewidth)
Constructs a new cloud shape.
function mxCodec(document)
Constructs an XML encoder/decoder for the specified owner document.
function mxCollapseChange(model,
cell,
collapsed)
Constructs a change of a collapsed state in the specified model.
function mxCompactTreeLayout(graph,
horizontal,
invert)
Constructs a new compact tree layout for the specified graph and orientation.
Constructs a new fast organic layout for the specified graph.
Constructs a new fast organic layout for the specified graph.
function mxCompositeLayout(graph,
layouts,
master)
Constructs a new layout using the given layouts.
function mxConnectionConstraint(point,
perimeter)
Constructs a new connection constraint for the given point and boolean arguments.
function mxConnectionHandler(graph,
factoryMethod)
Constructs an event handler that connects vertices using the specified factory method to create the new edges.
function mxConnector(points,
stroke,
strokewidth)
Constructs a new connector shape.
function mxConstraintHandler(graph)
Constructs an new constraint handler.
function mxCoordinateAssignment(layout,
intraCellSpacing,
interRankCellSpacing,
orientation,
initialX,
parallelEdgeSpacing)
Creates a coordinate assignment.
function mxCurrentRootChange(view,
root)
Constructs a change of the current root in the given view.
Constructs a change of the current root in the given view.
function mxCylinder(bounds,
fill,
stroke,
strokewidth)
Constructs a new cylinder shape.
function mxDefaultKeyHandler(editor)
Constructs a new default key handler for the mxEditor.graph in the given mxEditor.
function mxDefaultPopupMenu(config)
Constructs a new popupmenu-factory based on given configuration.
function mxDefaultToolbar(container,
editor)
Constructs a new toolbar for the given container and editor.
function mxDivResizer(div,
container)
Constructs an object that maintains the size of a div element when the window is being resized.
function mxDoubleEllipse(bounds,
fill,
stroke,
strokewidth)
Constructs a new ellipse shape.
function mxDragSource(element,
dropHandler)
Constructs a new drag source for the given element.
function mxEdgeHandler(state)
Constructs an edge handler for the specified mxCellState.
Constructs an edge handler for the specified mxCellState.
function mxEdgeLabelLayout(graph,
radius)
Constructs a new edge label layout.
function mxEditor(config)
Constructs a new editor.
function mxEllipse(bounds,
fill,
stroke,
strokewidth)
Constructs a new ellipse shape.
function mxEventObject(name)
Constructs a new event object with the specified name.
Constructs a new dictionary which allows object to be used as keys.
function mxEventSource(eventSource)
Constructs a new event source.
function mxForm(className)
Creates a HTML table using the specified classname.
var mxGenericChangeCodec = function(obj,
variable)
Factory function that creates a mxObjectCodec for the specified change and fieldname.
function mxGeometry(x,
y,
width,
height)
Constructs a new object to describe the size and location of a vertex or the control points of an edge.
function mxGeometryChange(model,
cell,
geometry)
Constructs a change of a geometry in the specified model.
function mxGraph(container,
model,
renderHint,
stylesheet)
Constructs a new mxGraph in the specified container.
function mxGraphAbstractHierarchyCell()
Constructs a new hierarchical layout algorithm.
function mxGraphHandler(graph)
Constructs an event handler that creates handles for the selection cells.
function mxGraphHierarchyEdge(edges)
Constructs a hierarchy edge
function mxGraphHierarchyModel(layout,
vertices,
roots,
parent,
tightenToSource)
Creates an internal ordered graph model using the vertices passed in.
function mxGraphHierarchyNode(cell)
Constructs an internal node to represent the specified real graph cell
function mxGraphLayout(graph)
Constructs a new layout using the given layouts.
function mxGraphModel(root)
Constructs a new graph model.
function mxGraphSelectionModel(graph)
Constructs a new graph selection model for the given mxGraph.
function mxGraphView(graph)
Constructs a new view for the given mxGraph.
function mxGuide(graph,
states)
Constructs a new guide object.
function mxHexagon()
Constructs a new hexagon shape.
function mxHierarchicalLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
function mxHierarchicalLayoutStage()
Constructs a new hierarchical layout stage.
function mxImage(src,
width,
height)
Constructs a new image.
function mxImageExport()
Constructs a new image export.
function mxImageShape(bounds,
image,
fill,
stroke,
strokewidth)
Constructs a new image shape.
function mxKeyHandler(graph,
target)
Constructs an event handler that executes functions bound to specific keystrokes.
function mxLabel(bounds,
fill,
stroke,
strokewidth)
Constructs a new label shape.
function mxLayoutManager(graph)
Constructs a new automatic layout for the given graph.
function mxLine(bounds,
stroke,
strokewidth)
Constructs a new line shape.
function mxMedianHybridCrossingReduction(layout)
Creates a coordinate assignment.
function mxMinimumCycleRemover(layout)
Creates a cycle remover for the given internal model.
function mxMorphing(graph,
steps,
ease,
delay)
Constructs an animation.
function mxMouseEvent(evt,
state)
Constructs a new event object for the given arguments.
function mxMultiplicity(source,
type,
attr,
value,
min,
max,
validNeighbors,
countError,
typeError,
validNeighborsAllowed)
Instantiate class mxMultiplicity in order to describe allowed connections in a graph.
function mxObjectCodec(template,
exclude,
idrefs,
mapping)
Constructs a new codec for the specified template object.
function mxOutline(source,
container)
Constructs a new outline for the specified graph inside the given container.
Constructs an event handler that creates a mxPopupMenu and pans the graph.
function mxPartitionLayout(graph,
horizontal,
spacing,
border)
Constructs a new stack layout layout for the specified graph, spacing, orientation and offset.
function mxPoint(x,
y)
Constructs a new point for the optional x and y coordinates.
function mxPolyline(points,
stroke,
strokewidth)
Constructs a new polyline shape.
Constructs a popupmenu.
function mxPopupMenuHandler(graph,
factoryMethod)
Constructs an event handler that creates a mxPopupMenu.
function mxPrintPreview(graph,
scale,
pageFormat,
border,
x0,
y0,
borderColor,
title,
pageSelector)
Constructs a new print preview for the given parameters.
function mxRadialTreeLayout(graph)
Constructs a new radial tree layout for the specified graph
function mxRectangle(x,
y,
width,
height)
Constructs a new rectangle for the optional parameters.
Constructs a new rectangle for the optional parameters.
function mxRectangleShape(bounds,
fill,
stroke,
strokewidth)
Constructs a new rectangle shape.
function mxRhombus(bounds,
fill,
stroke,
strokewidth)
Constructs a new rhombus shape.
function mxRootChange(model,
root)
Constructs a change of the root in the specified model.
function mxRubberband(graph)
Constructs an event handler that selects rectangular regions in the graph using rubberband selection.
function mxShape(stencil)
Constructs a new shape.
function mxSpaceManager(graph,
shiftRightwards,
shiftDownwards,
extendParents)
Constructs a new automatic layout for the given graph.
function mxStackLayout(graph,
horizontal,
spacing,
x0,
y0,
border)
Constructs a new stack layout layout for the specified graph, spacing, orientation and offset.
function mxStencil(desc)
Constructs a new generic shape by setting desc to the given XML node and invoking parseDescription and parseConstraints.
function mxStyleChange(model,
cell,
style)
Constructs a change of a style in the specified model.
function mxStylesheet()
Constructs a new stylesheet and assigns default styles.
function mxSvgCanvas2D(root,
styleEnabled)
Constructs a new SVG canvas.
function mxSwimlane(bounds,
fill,
stroke,
strokewidth)
Constructs a new swimlane shape.
function mxSwimlaneLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
function mxSwimlaneManager(graph,
horizontal,
addEnabled,
resizeEnabled)
Constructs a new swimlane manager for the given graph.
function mxSwimlaneModel(layout,
vertices,
roots,
parent,
tightenToSource)
Creates an internal ordered graph model using the vertices passed in.
function mxSwimlaneOrdering(layout)
Creates a cycle remover for the given internal model.
function mxTerminalChange(model,
cell,
terminal,
source)
Constructs a change of a terminal in the specified model.
function mxText(value,
bounds,
align,
valign,
color,
family,
size,
fontStyle,
spacing,
spacingTop,
spacingRight,
spacingBottom,
spacingLeft,
horizontal,
background,
border,
wrap,
clipped,
overflow,
labelPadding)
Constructs a new text shape.
function mxToolbar(container)
Constructs a toolbar in the specified container.
function mxTooltipHandler(graph,
delay)
Constructs an event handler that displays tooltips with the specified delay (in milliseconds).
function mxTriangle()
Constructs a new triangle shape.
function mxUndoableEdit(source,
significant)
Constructs a new undoable edit for the given source.
function mxUndoManager(size)
Constructs a new undo manager with the given history size.
function mxValueChange(model,
cell,
value)
Constructs a change of a user object in the specified model.
Constructs an event handler that allows to resize vertices and groups.
function mxVisibleChange(model,
cell,
visible)
Constructs a change of a visible state in the specified model.
function mxWindow(title,
content,
x,
y,
width,
height,
minimizable,
movable,
replaceNode,
style)
Constructs a new window with the given dimension and title to display the specified content.
function mxXmlCanvas2D(root)
Constructs a new abstract canvas.
function mxXmlRequest(url,
params,
method,
async,
username,
password)
Constructs an XML HTTP request.
+
makeDraggable: function(element,
graphF,
funct,
dragElement,
dx,
dy,
autoscroll,
scalePreview,
highlightDropTargets,
getDropTarget)
Configures the given DOM element to act as a drag source for the specified graph.
Stores the (key, value) pairs in this dictionary.
Marks the markedState and fires a mark event.
mxCellMarker.prototype.mark = function()
Marks the markedState and fires a mark event.
mxCellMarker.prototype.markCell = function(cell,
color)
Marks the given cell using the given color, or validColor if no color is specified.
mxSwimlaneModel.prototype.maxChainDfs = function(parent,
root,
connectingEdge,
seen,
chainCount)
Performs a depth first search on the internal hierarchy model.
function MedianCellSorter()
Constructs a new median cell sorter.
mxCoordinateAssignment.prototype.medianPos = function(i,
model)
Performs one median positioning sweep in one direction
mxMedianHybridCrossingReduction.prototype.medianRank = function(rankValue,
downwardSweep)
Attempts to minimise the median placement of connected cells on this rank and one of the adjacent ranks
mxMedianHybridCrossingReduction.prototype.medianValue = function(
   connectedCells,
   rankValue
)
Calculates the median rank order positioning for the specified cell using the connected cells on the specified rank.
mxCoordinateAssignment.prototype.medianXValue = function(connectedCells,
rankValue)
Calculates the median position of the connected cell on the specified rank
mxCompactTreeLayout.prototype.merge = function(p1,
p2)
mxGraphModel.prototype.mergeChildren = function(from,
to,
cloneAllEdges)
Merges the children of the given cell into the given target cell inside this model.
mxCoordinateAssignment.prototype.minNode = function(model)
Performs one median positioning sweep in both directions
mxCoordinateAssignment.prototype.minPath = function(graph,
model)
Straightens out chains of virtual nodes where possibleacade to those stored after this layout processing step has completed.
Allow optimization by replacing VML with HTML.
mod: function(n,
m)
Returns the remainder of division of n by m.
mxCellTracker.prototype.mouseDown = function(sender,
me)
Ignores the event.
mxConnectionHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a new connection.
mxDragSource.prototype.mouseDown = function(evt)
Returns the drop target for the given graph and coordinates.
mxEdgeHandler.prototype.mouseDown = function(sender,
me)
Handles the event by checking if a special element of the handler was clicked, in which case the index parameter is non-null.
mxGraphHandler.prototype.mouseDown = function(sender,
me)
Handles the event by selecing the given cell and creating a handle for it.
mxOutline.prototype.mouseDown = function(sender,
me)
Handles the event by starting a translation or zoom.
mxPanningHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating the panning.
mxPopupMenuHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating the panning.
mxRubberband.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a rubberband selection.
mxSelectionCellsHandler.prototype.mouseDown = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a rubberband selection.
mxVertexHandler.prototype.mouseDown = function(sender,
me)
Handles the event if a handle has been clicked.
mxCellTracker.prototype.mouseMove = function(sender,
me)
Handles the event by highlighting the cell under the mousepointer if it is over the hotspot region of the cell.
mxConnectionHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview edge or by highlighting a possible source or target terminal.
mxDragSource.prototype.mouseMove = function(evt)
Gets the graph for the given event using getGraphForEvent, updates the currentGraph, calling dragEnter and dragExit on the new and old graph, respectively, and invokes dragOver if currentGraph is not null.
mxEdgeHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview.
mxGraphHandler.prototype.mouseMove = function(sender,
me)
Handles the event by highlighting possible drop targets and updating the preview.
mxOutline.prototype.mouseMove = function(sender,
me)
Handles the event by previewing the viewrect in graph and updating the rectangle that represents the viewrect in the outline.
mxPanningHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the panning on the graph.
mxPopupMenuHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the panning on the graph.
mxRubberband.prototype.mouseMove = function(sender,
me)
Handles the event by updating therubberband selection.
mxSelectionCellsHandler.prototype.mouseMove = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the rubberband selection.
mxVertexHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview.
mxCellTracker.prototype.mouseUp = function(sender,
me)
Handles the event by reseting the highlight.
mxConnectionHandler.prototype.mouseUp = function(sender,
me)
Handles the event by inserting the new connection.
mxDragSource.prototype.mouseUp = function(evt)
Processes the mouse up event and invokes drop, dragExit and stopDrag as required.
mxEdgeHandler.prototype.mouseUp = function(sender,
me)
Handles the event to applying the previewed changes on the edge by using moveLabel, connect or changePoints.
mxGraphHandler.prototype.mouseUp = function(sender,
me)
Handles the event by applying the changes to the selection cells.
mxOutline.prototype.mouseUp = function(sender,
me)
Handles the event by applying the translation or zoom to graph.
mxPanningHandler.prototype.mouseUp = function(sender,
me)
Handles the event by setting the translation on the view or showing the popupmenu.
mxPopupMenuHandler.prototype.mouseUp = function(sender,
me)
Handles the event by setting the translation on the view or showing the popupmenu.
mxRubberband.prototype.mouseUp = function(sender,
me)
Handles the event by selecting the region of the rubberband using mxGraph.selectRegion.
mxSelectionCellsHandler.prototype.mouseUp = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseUp = function(sender,
me)
Handles the event by resetting the tooltip timer or hiding the existing tooltip.
mxVertexHandler.prototype.mouseUp = function(sender,
me)
Handles the event by applying the changes to the geometry.
mxGuide.prototype.move = function(bounds,
delta,
gridEnabled)
Moves the bounds by the given mxPoint and returnt the snapped point.
mxCompositeLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell by calling move on master or the first layout in layouts.
mxGraphLayout.prototype.moveCell = function(cell,
x,
y)
Notified when a cell is being moved in a parent that has automatic layout to update the cell state (eg.
mxPartitionLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell.
mxStackLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell.
mxGraph.prototype.moveCells = function(cells,
dx,
dy,
clone,
target,
evt)
Moves or clones the specified cells and moves the cells or clones by the given amount, adding them to the optional target cell.
mxGraphHandler.prototype.moveCells = function(cells,
dx,
dy,
clone,
target,
evt)
Moves the given cells by the specified amount.
mxVertexHandler.prototype.moveChildren = function(cell,
dx,
dy)
Moves the children of the given cell by the given vector.
mxEdgeHandler.prototype.moveLabel = function(edgeState,
x,
y)
Changes the coordinates for the label of the given edge.
mxCompactTreeLayout.prototype.moveNode = function(node,
dx,
dy)
Moves the specified node and all of its children by the given amount.
mxCellStatePreview.prototype.moveState = function(state,
dx,
dy,
add,
includeEdges)
mxAbstractCanvas2D.prototype.moveTo = function(x,
y)
Moves the current path the given coordinates.
mxXmlCanvas2D.prototype.moveTo = function(x,
y)
Moves the current path the given point.
function mxAbstractCanvas2D()
Constructs a new abstract canvas.
function mxActor(bounds,
fill,
stroke,
strokewidth)
Constructs a new actor shape.
function mxAnimation(delay)
Constructs an animation.
function mxArrow(points,
fill,
stroke,
strokewidth,
arrowWidth,
spacing,
endSize)
Constructs a new arrow shape.
function mxAutoSaveManager(graph)
Constructs a new automatic layout for the given graph.
function mxCell(value,
geometry,
style)
Constructs a new cell to be used in a graph model.
function mxCellAttributeChange(cell,
attribute,
value)
Constructs a change of a attribute of the DOM node stored as the value of the given mxCell.
function mxCellEditor(graph)
Constructs a new in-place editor for the specified graph.
function mxCellHighlight(graph,
highlightColor,
strokeWidth,
dashed)
Constructs a cell highlight.
function mxCellMarker(graph,
validColor,
invalidColor,
hotspot)
Constructs a new cell marker.
function mxCellOverlay(image,
tooltip,
align,
verticalAlign,
offset,
cursor)
Constructs a new overlay using the given image and tooltip.
function mxCellRenderer()
arrow, rectangle, ellipse, rhombus, image, line, label, cylinder, swimlane, connector, actor and cloud.
function mxCellState(view,
cell,
style)
Constructs a new object that represents the current state of the given cell in the specified view.
function mxCellStatePreview(graph)
Constructs a move preview for the given graph.
function mxCellTracker(graph,
color,
funct)
Constructs an event handler that highlights cells.
function mxChildChange(model,
parent,
child,
index)
Constructs a change of a child in the specified model.
function mxCircleLayout(graph,
radius)
Constructs a new circular layout for the specified radius.
function mxCloud(bounds,
fill,
stroke,
strokewidth)
Constructs a new cloud shape.
function mxCodec(document)
Constructs an XML encoder/decoder for the specified owner document.
function mxCollapseChange(model,
cell,
collapsed)
Constructs a change of a collapsed state in the specified model.
function mxCompactTreeLayout(graph,
horizontal,
invert)
Constructs a new compact tree layout for the specified graph and orientation.
Constructs a new fast organic layout for the specified graph.
Constructs a new fast organic layout for the specified graph.
function mxCompositeLayout(graph,
layouts,
master)
Constructs a new layout using the given layouts.
function mxConnectionConstraint(point,
perimeter)
Constructs a new connection constraint for the given point and boolean arguments.
function mxConnectionHandler(graph,
factoryMethod)
Constructs an event handler that connects vertices using the specified factory method to create the new edges.
function mxConnector(points,
stroke,
strokewidth)
Constructs a new connector shape.
function mxConstraintHandler(graph)
Constructs an new constraint handler.
function mxCoordinateAssignment(layout,
intraCellSpacing,
interRankCellSpacing,
orientation,
initialX,
parallelEdgeSpacing)
Creates a coordinate assignment.
function mxCurrentRootChange(view,
root)
Constructs a change of the current root in the given view.
Constructs a change of the current root in the given view.
function mxCylinder(bounds,
fill,
stroke,
strokewidth)
Constructs a new cylinder shape.
function mxDefaultKeyHandler(editor)
Constructs a new default key handler for the mxEditor.graph in the given mxEditor.
function mxDefaultPopupMenu(config)
Constructs a new popupmenu-factory based on given configuration.
function mxDefaultToolbar(container,
editor)
Constructs a new toolbar for the given container and editor.
function mxDivResizer(div,
container)
Constructs an object that maintains the size of a div element when the window is being resized.
function mxDoubleEllipse(bounds,
fill,
stroke,
strokewidth)
Constructs a new ellipse shape.
function mxDragSource(element,
dropHandler)
Constructs a new drag source for the given element.
function mxEdgeHandler(state)
Constructs an edge handler for the specified mxCellState.
Constructs an edge handler for the specified mxCellState.
function mxEdgeLabelLayout(graph,
radius)
Constructs a new edge label layout.
function mxEditor(config)
Constructs a new editor.
function mxEllipse(bounds,
fill,
stroke,
strokewidth)
Constructs a new ellipse shape.
function mxEventObject(name)
Constructs a new event object with the specified name.
Constructs a new dictionary which allows object to be used as keys.
function mxEventSource(eventSource)
Constructs a new event source.
function mxForm(className)
Creates a HTML table using the specified classname.
var mxGenericChangeCodec = function(obj,
variable)
Factory function that creates a mxObjectCodec for the specified change and fieldname.
function mxGeometry(x,
y,
width,
height)
Constructs a new object to describe the size and location of a vertex or the control points of an edge.
function mxGeometryChange(model,
cell,
geometry)
Constructs a change of a geometry in the specified model.
function mxGraph(container,
model,
renderHint,
stylesheet)
Constructs a new mxGraph in the specified container.
function mxGraphAbstractHierarchyCell()
Constructs a new hierarchical layout algorithm.
function mxGraphHandler(graph)
Constructs an event handler that creates handles for the selection cells.
function mxGraphHierarchyEdge(edges)
Constructs a hierarchy edge
function mxGraphHierarchyModel(layout,
vertices,
roots,
parent,
tightenToSource)
Creates an internal ordered graph model using the vertices passed in.
function mxGraphHierarchyNode(cell)
Constructs an internal node to represent the specified real graph cell
function mxGraphLayout(graph)
Constructs a new layout using the given layouts.
function mxGraphModel(root)
Constructs a new graph model.
function mxGraphSelectionModel(graph)
Constructs a new graph selection model for the given mxGraph.
function mxGraphView(graph)
Constructs a new view for the given mxGraph.
function mxGuide(graph,
states)
Constructs a new guide object.
function mxHexagon()
Constructs a new hexagon shape.
function mxHierarchicalLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
function mxHierarchicalLayoutStage()
Constructs a new hierarchical layout stage.
function mxImage(src,
width,
height)
Constructs a new image.
function mxImageExport()
Constructs a new image export.
function mxImageShape(bounds,
image,
fill,
stroke,
strokewidth)
Constructs a new image shape.
function mxKeyHandler(graph,
target)
Constructs an event handler that executes functions bound to specific keystrokes.
function mxLabel(bounds,
fill,
stroke,
strokewidth)
Constructs a new label shape.
function mxLayoutManager(graph)
Constructs a new automatic layout for the given graph.
function mxLine(bounds,
stroke,
strokewidth)
Constructs a new line shape.
function mxMedianHybridCrossingReduction(layout)
Creates a coordinate assignment.
function mxMinimumCycleRemover(layout)
Creates a cycle remover for the given internal model.
function mxMorphing(graph,
steps,
ease,
delay)
Constructs an animation.
function mxMouseEvent(evt,
state)
Constructs a new event object for the given arguments.
function mxMultiplicity(source,
type,
attr,
value,
min,
max,
validNeighbors,
countError,
typeError,
validNeighborsAllowed)
Instantiate class mxMultiplicity in order to describe allowed connections in a graph.
function mxObjectCodec(template,
exclude,
idrefs,
mapping)
Constructs a new codec for the specified template object.
function mxOutline(source,
container)
Constructs a new outline for the specified graph inside the given container.
Constructs an event handler that creates a mxPopupMenu and pans the graph.
function mxPartitionLayout(graph,
horizontal,
spacing,
border)
Constructs a new stack layout layout for the specified graph, spacing, orientation and offset.
function mxPoint(x,
y)
Constructs a new point for the optional x and y coordinates.
function mxPolyline(points,
stroke,
strokewidth)
Constructs a new polyline shape.
Constructs a popupmenu.
function mxPopupMenuHandler(graph,
factoryMethod)
Constructs an event handler that creates a mxPopupMenu.
function mxPrintPreview(graph,
scale,
pageFormat,
border,
x0,
y0,
borderColor,
title,
pageSelector)
Constructs a new print preview for the given parameters.
function mxRadialTreeLayout(graph)
Constructs a new radial tree layout for the specified graph
function mxRectangle(x,
y,
width,
height)
Constructs a new rectangle for the optional parameters.
Constructs a new rectangle for the optional parameters.
function mxRectangleShape(bounds,
fill,
stroke,
strokewidth)
Constructs a new rectangle shape.
function mxRhombus(bounds,
fill,
stroke,
strokewidth)
Constructs a new rhombus shape.
function mxRootChange(model,
root)
Constructs a change of the root in the specified model.
function mxRubberband(graph)
Constructs an event handler that selects rectangular regions in the graph using rubberband selection.
function mxShape(stencil)
Constructs a new shape.
function mxSpaceManager(graph,
shiftRightwards,
shiftDownwards,
extendParents)
Constructs a new automatic layout for the given graph.
function mxStackLayout(graph,
horizontal,
spacing,
x0,
y0,
border)
Constructs a new stack layout layout for the specified graph, spacing, orientation and offset.
function mxStencil(desc)
Constructs a new generic shape by setting desc to the given XML node and invoking parseDescription and parseConstraints.
function mxStyleChange(model,
cell,
style)
Constructs a change of a style in the specified model.
function mxStylesheet()
Constructs a new stylesheet and assigns default styles.
function mxSvgCanvas2D(root,
styleEnabled)
Constructs a new SVG canvas.
function mxSwimlane(bounds,
fill,
stroke,
strokewidth)
Constructs a new swimlane shape.
function mxSwimlaneLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
function mxSwimlaneManager(graph,
horizontal,
addEnabled,
resizeEnabled)
Constructs a new swimlane manager for the given graph.
function mxSwimlaneModel(layout,
vertices,
roots,
parent,
tightenToSource)
Creates an internal ordered graph model using the vertices passed in.
function mxSwimlaneOrdering(layout)
Creates a cycle remover for the given internal model.
function mxTerminalChange(model,
cell,
terminal,
source)
Constructs a change of a terminal in the specified model.
function mxText(value,
bounds,
align,
valign,
color,
family,
size,
fontStyle,
spacing,
spacingTop,
spacingRight,
spacingBottom,
spacingLeft,
horizontal,
background,
border,
wrap,
clipped,
overflow,
labelPadding)
Constructs a new text shape.
function mxToolbar(container)
Constructs a toolbar in the specified container.
function mxTooltipHandler(graph,
delay)
Constructs an event handler that displays tooltips with the specified delay (in milliseconds).
function mxTriangle()
Constructs a new triangle shape.
function mxUndoableEdit(source,
significant)
Constructs a new undoable edit for the given source.
function mxUndoManager(size)
Constructs a new undo manager with the given history size.
function mxValueChange(model,
cell,
value)
Constructs a change of a user object in the specified model.
Constructs an event handler that allows to resize vertices and groups.
function mxVisibleChange(model,
cell,
visible)
Constructs a change of a visible state in the specified model.
function mxWindow(title,
content,
x,
y,
width,
height,
minimizable,
movable,
replaceNode,
style)
Constructs a new window with the given dimension and title to display the specified content.
function mxXmlCanvas2D(root)
Constructs a new abstract canvas.
function mxXmlRequest(url,
params,
method,
async,
username,
password)
Constructs an XML HTTP request.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions12.html b/docs/js-api/index/Functions12.html index 47c663d3c..30330500d 100644 --- a/docs/js-api/index/Functions12.html +++ b/docs/js-api/index/Functions12.html @@ -11,13 +11,13 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
N
 notify, mxUndoableEdit
O
 offset, mxCompactTreeLayout
 onEncode, mxRootChangeCodec
 onInit
 open
 orderCells, mxGraph
 OrthConnector, mxEdgeStyle
 outline, mxOutline
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
N
 notify, mxUndoableEdit
O
 offset, mxCompactTreeLayout
 onEncode, mxRootChangeCodec
 onInit
 open
 orderCells, mxGraph
 OrthConnector, mxEdgeStyle
 outline, mxOutline
-
mxUndoableEdit.prototype.notify = function()
Hook to notify any listeners of the changes after an undo or redo has been carried out.
+
mxUndoableEdit.prototype.notify = function()
Hook to notify any listeners of the changes after an undo or redo has been carried out.
-
mxCompactTreeLayout.prototype.offset = function(p1,
p2,
a1,
a2,
b1,
b2)
Encodes the child recursively.
Called from within the constructor.
Called from within the constructor.
mxEditor.prototype.open = function (filename)
Opens the specified file synchronously and parses it using readGraphModel.
mxPrintPreview.prototype.open = function(css)
Shows the print preview window.
mxGraph.prototype.orderCells = function(back,
cells)
Moves the given cells to the front or back.
OrthConnector: function(state,
source,
target,
points,
result)
Implements a local orthogonal router between the given cells.
Reference to the mxGraph that renders the outline.
+
mxCompactTreeLayout.prototype.offset = function(p1,
p2,
a1,
a2,
b1,
b2)
Encodes the child recursively.
Called from within the constructor.
Called from within the constructor.
mxEditor.prototype.open = function (filename)
Opens the specified file synchronously and parses it using readGraphModel.
mxPrintPreview.prototype.open = function(css)
Shows the print preview window.
mxGraph.prototype.orderCells = function(back,
cells)
Moves the given cells to the front or back.
OrthConnector: function(state,
source,
target,
points,
result)
Implements a local orthogonal router between the given cells.
Reference to the mxGraph that renders the outline.
@@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions13.html b/docs/js-api/index/Functions13.html index d9cc62961..a01087ed0 100644 --- a/docs/js-api/index/Functions13.html +++ b/docs/js-api/index/Functions13.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
P
 paint
 paintBackground
 paintEdgeShape
 paintForeground
 paintGlassEffect, mxShape
 paintImage, mxLabel
 paintIndicator, mxLabel
 paintLine, mxPolyline
 paintRoundedSwimlane, mxSwimlane
 paintSwimlane, mxSwimlane
 paintVertexShape
 panGraph
 para, mxUtils
 parentForCellChanged, mxGraphModel
 parse, mxResources
 parseConstraint, mxStencil
 parseConstraints, mxStencil
 parseDescription, mxStencil
 parseXml, mxUtils
 paste, mxClipboard
 placeLabels, mxEdgeLabelLayout
 placementStage
 plainText, mxVmlCanvas2D
 popup
 positionChanged, mxVertexHandler
 post, mxUtils
 postConfigureShape, mxCellRenderer
 postDiagram, mxEditor
 postProcessCellStyle, mxGraph
 print, mxPrintPreview
 printScreen, mxUtils
 process, mxCellMarker
 processChange, mxGraph
 processEvent, mxVertexHandler
 processInclude, mxObjectCodec
 processReversedEdge, mxCoordinateAssignment
 prompt, mxUtils
 ptSeqDistSq, mxUtils
 put, mxDictionary
 putCellStyle, mxStylesheet
 putDefaultEdgeStyle, mxStylesheet
 putDefaultVertexStyle, mxStylesheet
 putImage, mxImageBundle
 putObject, mxCodec
 putValue, mxStyleRegistry
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
P
 paint
 paintBackground
 paintEdgeShape
 paintForeground
 paintGlassEffect, mxShape
 paintImage, mxLabel
 paintIndicator, mxLabel
 paintLine, mxPolyline
 paintRoundedSwimlane, mxSwimlane
 paintSwimlane, mxSwimlane
 paintVertexShape
 panGraph
 para, mxUtils
 parentForCellChanged, mxGraphModel
 parse, mxResources
 parseConstraint, mxStencil
 parseConstraints, mxStencil
 parseDescription, mxStencil
 parseXml, mxUtils
 paste, mxClipboard
 placeLabels, mxEdgeLabelLayout
 placementStage
 plainText, mxVmlCanvas2D
 popup
 positionChanged, mxVertexHandler
 post, mxUtils
 postConfigureShape, mxCellRenderer
 postDiagram, mxEditor
 postProcessCellStyle, mxGraph
 print, mxPrintPreview
 printScreen, mxUtils
 process, mxCellMarker
 processChange, mxGraph
 processEvent, mxVertexHandler
 processInclude, mxObjectCodec
 processReversedEdge, mxCoordinateAssignment
 prompt, mxUtils
 ptSeqDistSq, mxUtils
 put, mxDictionary
 putCellStyle, mxStylesheet
 putDefaultEdgeStyle, mxStylesheet
 putDefaultVertexStyle, mxStylesheet
 putImage, mxImageBundle
 putObject, mxCodec
 putValue, mxStyleRegistry
-
mxShape.prototype.paint = function(c)
Generic rendering code.
mxText.prototype.paint = function(c)
Generic rendering code.
mxDoubleEllipse.prototype.paintBackground = function(c,
x,
y,
w,
h)
Paints the background.
mxRectangleShape.prototype.paintBackground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxShape.prototype.paintBackground = function(c,
x,
y,
w,
h)
Hook for subclassers.
mxArrow.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxConnector.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxPolyline.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxShape.prototype.paintEdgeShape = function(c,
pts)
Hook for subclassers.
mxDoubleEllipse.prototype.paintForeground = function(c,
x,
y,
w,
h)
Paints the foreground.
mxLabel.prototype.paintForeground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxRectangleShape.prototype.paintForeground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxShape.prototype.paintForeground = function(c,
x,
y,
w,
h)
Hook for subclassers.
mxShape.prototype.paintGlassEffect = function(c,
x,
y,
w,
h,
arc)
Paints the glass gradient effect.
mxLabel.prototype.paintImage = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxLabel.prototype.paintIndicator = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxPolyline.prototype.paintLine = function(c,
pts,
rounded)
Paints the line shape.
mxSwimlane.prototype.paintRoundedSwimlane = function(c,
x,
y,
w,
h,
start,
r,
fill,
swimlaneLine)
Paints the swimlane vertex shape.
mxSwimlane.prototype.paintSwimlane = function(c,
x,
y,
w,
h,
start,
fill,
swimlaneLine)
Paints the swimlane vertex shape.
mxActor.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxCylinder.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxEllipse.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Paints the ellipse shape.
mxImageShape.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxLine.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxRhombus.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Generic painting implementation.
mxShape.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Paints the vertex shape.
Paints the swimlane vertex shape.
mxGraph.prototype.panGraph = function(dx,
dy)
Shifts the graph display by the given amount.
mxPanningHandler.prototype.panGraph = function(dx,
dy)
Pans graph by the given amount.
para: function(parent,
text)
Appends a new paragraph with the given text to the specified parent and returns the paragraph.
mxGraphModel.prototype.parentForCellChanged = function(cell,
parent,
index)
Inner callback to update the parent of a cell using mxCell.insert on the parent and return the previous parent.
parse: function(text)
Parses the key, value pairs in the specified text and stores them as local resources.
mxStencil.prototype.parseConstraint = function(node)
Parses the given XML node and returns its mxConnectionConstraint.
mxStencil.prototype.parseConstraints = function()
Reads the constraints from desc into constraints using parseConstraint.
mxStencil.prototype.parseDescription = function()
Reads w0, h0, aspect, bgNodes and fgNodes from desc.
parseXml: function()
Parses the specified XML string into a new XML document and returns the new document.
paste: function(graph)
Pastes the cells into the specified graph restoring the relation to parents, if possible.
mxEdgeLabelLayout.prototype.placeLabels = function(v,
e)
Places the labels of the given edges.
mxHierarchicalLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
mxSwimlaneLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
mxVmlCanvas2D.prototype.plainText = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the outline of the current path.
mxPopupMenu.prototype.popup = function(x,
y,
cell,
evt)
Shows the popup menu for the given event and cell.
popup: function(content,
isInternalWindow)
Shows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.
mxHandle.prototype.positionChanged = function()
Called after setPosition has been called in processEvent.
post: function(url,
params,
onload,
onerror)
Posts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.
mxCellRenderer.prototype.postConfigureShape = function(state)
Replaces any reserved words used for attributes, eg.
mxEditor.prototype.postDiagram = function (url,
data)
Hook for subclassers to override the posting of a diagram represented by the given node to the given URL.
mxGraph.prototype.postProcessCellStyle = function(style)
Tries to resolve the value for the image style in the image bundles and turns short data URIs as defined in mxImageBundle to data URIs as defined in RFC 2397 of the IETF.
mxPrintPreview.prototype.print = function(css)
Opens the print preview and shows the print dialog.
printScreen: function(graph)
Prints the specified graph using a new window and the built-in print dialog.
mxCellMarker.prototype.process = function(me)
Processes the given event and cell and marks the state returned by getState with the color returned by getMarkerColor.
mxGraph.prototype.processChange = function(change)
Processes the given change and invalidates the respective cached data in view.
mxHandle.prototype.processEvent = function(me)
Processes the given mxMouseEvent and invokes setPosition.
mxObjectCodec.prototype.processInclude = function(dec,
node,
into)
Returns true if the given node is an include directive and executes the include by decoding the XML document.
mxCoordinateAssignment.prototype.processReversedEdge = function(graph,
model)
Hook to add additional processing
prompt: function(message,
defaultValue)
Displays the given message in a prompt dialog.
Returns the square distance between a segment and a point.
mxDictionary.prototype.put = function(key,
value)
Stores the value under the given key and returns the previous value for that key.
mxStylesheet.prototype.putCellStyle = function(name,
style)
Stores the given map of key, value pairs under the given name in styles.
mxStylesheet.prototype.putDefaultEdgeStyle = function(style)
Sets the default style for edges using defaultEdge as the stylename.
mxStylesheet.prototype.putDefaultVertexStyle = function(style)
Sets the default style for vertices using defaultVertex as the stylename.
mxImageBundle.prototype.putImage = function(key,
value,
fallback)
Adds the specified entry to the map.
mxCodec.prototype.putObject = function(id,
obj)
Assoiates the given object with the given ID and returns the given object.
putValue: function(name,
obj)
Puts the given object into the registry under the given name.
+
mxShape.prototype.paint = function(c)
Generic rendering code.
mxText.prototype.paint = function(c)
Generic rendering code.
mxDoubleEllipse.prototype.paintBackground = function(c,
x,
y,
w,
h)
Paints the background.
mxRectangleShape.prototype.paintBackground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxShape.prototype.paintBackground = function(c,
x,
y,
w,
h)
Hook for subclassers.
mxArrow.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxConnector.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxPolyline.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxShape.prototype.paintEdgeShape = function(c,
pts)
Hook for subclassers.
mxDoubleEllipse.prototype.paintForeground = function(c,
x,
y,
w,
h)
Paints the foreground.
mxLabel.prototype.paintForeground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxRectangleShape.prototype.paintForeground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxShape.prototype.paintForeground = function(c,
x,
y,
w,
h)
Hook for subclassers.
mxShape.prototype.paintGlassEffect = function(c,
x,
y,
w,
h,
arc)
Paints the glass gradient effect.
mxLabel.prototype.paintImage = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxLabel.prototype.paintIndicator = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxPolyline.prototype.paintLine = function(c,
pts,
rounded)
Paints the line shape.
mxSwimlane.prototype.paintRoundedSwimlane = function(c,
x,
y,
w,
h,
start,
r,
fill,
swimlaneLine)
Paints the swimlane vertex shape.
mxSwimlane.prototype.paintSwimlane = function(c,
x,
y,
w,
h,
start,
fill,
swimlaneLine)
Paints the swimlane vertex shape.
mxActor.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxCylinder.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxEllipse.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Paints the ellipse shape.
mxImageShape.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxLine.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxRhombus.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Generic painting implementation.
mxShape.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Paints the vertex shape.
Paints the swimlane vertex shape.
mxGraph.prototype.panGraph = function(dx,
dy)
Shifts the graph display by the given amount.
mxPanningHandler.prototype.panGraph = function(dx,
dy)
Pans graph by the given amount.
para: function(parent,
text)
Appends a new paragraph with the given text to the specified parent and returns the paragraph.
mxGraphModel.prototype.parentForCellChanged = function(cell,
parent,
index)
Inner callback to update the parent of a cell using mxCell.insert on the parent and return the previous parent.
parse: function(text)
Parses the key, value pairs in the specified text and stores them as local resources.
mxStencil.prototype.parseConstraint = function(node)
Parses the given XML node and returns its mxConnectionConstraint.
mxStencil.prototype.parseConstraints = function()
Reads the constraints from desc into constraints using parseConstraint.
mxStencil.prototype.parseDescription = function()
Reads w0, h0, aspect, bgNodes and fgNodes from desc.
parseXml: function()
Parses the specified XML string into a new XML document and returns the new document.
paste: function(graph)
Pastes the cells into the specified graph restoring the relation to parents, if possible.
mxEdgeLabelLayout.prototype.placeLabels = function(v,
e)
Places the labels of the given edges.
mxHierarchicalLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
mxSwimlaneLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
mxVmlCanvas2D.prototype.plainText = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the outline of the current path.
mxPopupMenu.prototype.popup = function(x,
y,
cell,
evt)
Shows the popup menu for the given event and cell.
popup: function(content,
isInternalWindow)
Shows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.
mxHandle.prototype.positionChanged = function()
Called after setPosition has been called in processEvent.
post: function(url,
params,
onload,
onerror)
Posts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.
mxCellRenderer.prototype.postConfigureShape = function(state)
Replaces any reserved words used for attributes, eg.
mxEditor.prototype.postDiagram = function (url,
data)
Hook for subclassers to override the posting of a diagram represented by the given node to the given URL.
mxGraph.prototype.postProcessCellStyle = function(style)
Tries to resolve the value for the image style in the image bundles and turns short data URIs as defined in mxImageBundle to data URIs as defined in RFC 2397 of the IETF.
mxPrintPreview.prototype.print = function(css)
Opens the print preview and shows the print dialog.
printScreen: function(graph)
Prints the specified graph using a new window and the built-in print dialog.
mxCellMarker.prototype.process = function(me)
Processes the given event and cell and marks the state returned by getState with the color returned by getMarkerColor.
mxGraph.prototype.processChange = function(change)
Processes the given change and invalidates the respective cached data in view.
mxHandle.prototype.processEvent = function(me)
Processes the given mxMouseEvent and invokes setPosition.
mxObjectCodec.prototype.processInclude = function(dec,
node,
into)
Returns true if the given node is an include directive and executes the include by decoding the XML document.
mxCoordinateAssignment.prototype.processReversedEdge = function(graph,
model)
Hook to add additional processing
prompt: function(message,
defaultValue)
Displays the given message in a prompt dialog.
Returns the square distance between a segment and a point.
mxDictionary.prototype.put = function(key,
value)
Stores the value under the given key and returns the previous value for that key.
mxStylesheet.prototype.putCellStyle = function(name,
style)
Stores the given map of key, value pairs under the given name in styles.
mxStylesheet.prototype.putDefaultEdgeStyle = function(style)
Sets the default style for edges using defaultEdge as the stylename.
mxStylesheet.prototype.putDefaultVertexStyle = function(style)
Sets the default style for vertices using defaultVertex as the stylename.
mxImageBundle.prototype.putImage = function(key,
value,
fallback)
Adds the specified entry to the map.
mxCodec.prototype.putObject = function(id,
obj)
Assoiates the given object with the given ID and returns the given object.
putValue: function(name,
obj)
Puts the given object into the registry under the given name.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions14.html b/docs/js-api/index/Functions14.html index 50aee71ba..0b48f7bec 100644 --- a/docs/js-api/index/Functions14.html +++ b/docs/js-api/index/Functions14.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
Q
 quadTo
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
Q
 quadTo
-
mxAbstractCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Adds a quadratic curve to the current path.
mxVmlCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Replaces quadratic curve with bezier curve in VML.
mxXmlCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Adds a quadratic curve to the current path.
+
mxAbstractCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Adds a quadratic curve to the current path.
mxVmlCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Replaces quadratic curve with bezier curve in VML.
mxXmlCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Adds a quadratic curve to the current path.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions15.html b/docs/js-api/index/Functions15.html index 78c961ac9..cb9233206 100644 --- a/docs/js-api/index/Functions15.html +++ b/docs/js-api/index/Functions15.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
R
 rankCoordinates, mxCoordinateAssignment
 rankMedianPosition, mxCoordinateAssignment
 readGraphModel, mxEditor
 reconfigure, mxShape
 rect
 rectangleIntersectsSegment, mxUtils
 RectanglePerimeter, mxPerimeter
 redirectMouseEvents, mxEvent
 redo
 redraw
 redrawBackgroundImage, mxGraphView
 redrawCellOverlays, mxCellRenderer
 redrawControl, mxCellRenderer
 redrawHandles
 redrawHtml, mxShape
 redrawHtmlShape
 redrawIcons, mxConnectionHandler
 redrawInnerBends
 redrawLabel, mxCellRenderer
 redrawPath
 redrawShape, mxShape
 reduceTemperature, mxFastOrganicLayout
 reference, mxCodec
 refresh
 refreshTasks, mxEditor
 register, mxCodecRegistry
 registerShape, mxCellRenderer
 relativeCcw, mxUtils
 release, mxEvent
 releaseSvgGradients, mxShape
 remove
 removeAllListeners, mxEvent
 removeAllStylenames, mxUtils
 removeCell, mxGraphSelectionModel
 removeCellOverlay, mxGraph
 removeCellOverlays, mxGraph
 removeCells
 removeCellsFromParent, mxGraph
 removeCursors, mxUtils
 removeDragElement, mxDragSource
 removeEdge, mxCell
 removeFromParent, mxCell
 removeFromTerminal, mxCell
 removeGestureListeners, mxEvent
 removeHint
 removeImageBundle, mxGraph
 removeListener
 removeListeners, mxDragSource
 removeMouseListener, mxGraph
 removePoint, mxEdgeHandler
 removeSelectionCell, mxGraph
 removeSelectionCells, mxGraph
 removeState, mxGraphView
 removeStateForCell, mxGraph
 removeStylename, mxUtils
 removeWhitespace, mxUtils
 renderPage, mxPrintPreview
 repaint
 repositionValid, mxCoordinateAssignment
 reset
 resetEdge, mxGraph
 resetEdges, mxGraph
 resetFirstTime, mxEditor
 resetHistory, mxEditor
 resetMode, mxToolbar
 resetTimer, mxTooltipHandler
 resetValidationState, mxGraphView
 resize
 resizeCell
 resizeCells, mxGraph
 resizeChildCells, mxGraph
 resizeHeight, mxDivResizer
 resizeSwimlane, mxSwimlaneManager
 resizeWidth, mxDivResizer
 resolve, mxCellPath
 resolveColor, mxCellRenderer
 restore
 restoreClone, mxGraphModel
 revalidate, mxGraphView
 revalidateState, mxCellStatePreview
 reversePortConstraints, mxUtils
 RhombusPerimeter, mxPerimeter
 rootChanged, mxGraphModel
 rotate
 rotate90, mxRectangle
 rotateCell, mxVertexHandler
 rotateLabelBounds, mxCellRenderer
 rotatePoint
 roundAngle, mxVertexHandler
 roundLength
 roundrect
 route, mxParallelEdgeLayout
 rtrim, mxUtils
 run
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
R
 rankCoordinates, mxCoordinateAssignment
 rankMedianPosition, mxCoordinateAssignment
 readGraphModel, mxEditor
 reconfigure, mxShape
 rect
 rectangleIntersectsSegment, mxUtils
 RectanglePerimeter, mxPerimeter
 redirectMouseEvents, mxEvent
 redo
 redraw
 redrawBackgroundImage, mxGraphView
 redrawCellOverlays, mxCellRenderer
 redrawControl, mxCellRenderer
 redrawHandles
 redrawHtml, mxShape
 redrawHtmlShape
 redrawIcons, mxConnectionHandler
 redrawInnerBends
 redrawLabel, mxCellRenderer
 redrawPath
 redrawShape, mxShape
 reduceTemperature, mxFastOrganicLayout
 reference, mxCodec
 refresh
 refreshTasks, mxEditor
 register, mxCodecRegistry
 registerShape, mxCellRenderer
 relativeCcw, mxUtils
 release, mxEvent
 releaseSvgGradients, mxShape
 remove
 removeAllListeners, mxEvent
 removeAllStylenames, mxUtils
 removeCell, mxGraphSelectionModel
 removeCellOverlay, mxGraph
 removeCellOverlays, mxGraph
 removeCells
 removeCellsFromParent, mxGraph
 removeCursors, mxUtils
 removeDragElement, mxDragSource
 removeEdge, mxCell
 removeFromParent, mxCell
 removeFromTerminal, mxCell
 removeGestureListeners, mxEvent
 removeHint
 removeImageBundle, mxGraph
 removeListener
 removeListeners, mxDragSource
 removeMouseListener, mxGraph
 removePoint, mxEdgeHandler
 removeSelectionCell, mxGraph
 removeSelectionCells, mxGraph
 removeState, mxGraphView
 removeStateForCell, mxGraph
 removeStylename, mxUtils
 removeWhitespace, mxUtils
 renderPage, mxPrintPreview
 repaint
 repositionValid, mxCoordinateAssignment
 reset
 resetEdge, mxGraph
 resetEdges, mxGraph
 resetFirstTime, mxEditor
 resetHistory, mxEditor
 resetMode, mxToolbar
 resetTimer, mxTooltipHandler
 resetValidationState, mxGraphView
 resize
 resizeCell
 resizeCells, mxGraph
 resizeChildCells, mxGraph
 resizeHeight, mxDivResizer
 resizeSwimlane, mxSwimlaneManager
 resizeWidth, mxDivResizer
 resolve, mxCellPath
 resolveColor, mxCellRenderer
 restore
 restoreClone, mxGraphModel
 revalidate, mxGraphView
 revalidateState, mxCellStatePreview
 reversePortConstraints, mxUtils
 RhombusPerimeter, mxPerimeter
 rootChanged, mxGraphModel
 rotate
 rotate90, mxRectangle
 rotateCell, mxVertexHandler
 rotateLabelBounds, mxCellRenderer
 rotatePoint
 roundAngle, mxVertexHandler
 roundLength
 roundrect
 route, mxParallelEdgeLayout
 rtrim, mxUtils
 run
-
mxCoordinateAssignment.prototype.rankCoordinates = function(rankValue,
graph,
model)
Sets up the layout in an initial positioning.
mxCoordinateAssignment.prototype.rankMedianPosition = function(rankValue,
model,
nextRankValue)
Performs median minimisation over one rank.
mxEditor.prototype.readGraphModel = function (node)
Reads the specified XML node into the existing graph model and resets the command history and modified state.
mxShape.prototype.reconfigure = function()
Reconfigures this shape.
mxSvgCanvas2D.prototype.rect = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.rect = function(x,
y,
w,
h)
Sets the current path to a rectangle.
mxXmlCanvas2D.prototype.rect = function(x,
y,
w,
h)
Puts a rectangle into the drawing buffer.
rectangleIntersectsSegment: function(bounds,
p1,
p2)
Returns true if the given rectangle intersects the given segment.
RectanglePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a rectangular perimeter for the given bounds.
redirectMouseEvents: function(node,
graph,
state,
down,
move,
up,
dblClick)
Redirects the mouse events from the given DOM node to the graph dispatch loop using the event and given state as event arguments.
mxEditor.prototype.redo = function ()
Redo the last change in graph.
mxUndoableEdit.prototype.redo = function()
Redoes all changes in this edit.
mxUndoManager.prototype.redo = function()
Redoes the last change.
mxEdgeSegmentHandler.prototype.redraw = function()
Overridden to invoke refresh before the redraw.
mxCellRenderer.prototype.redraw = function(state,
force,
rendering)
Updates the bounds or points and scale of the shapes for the given cell state.
mxEdgeHandler.prototype.redraw = function()
Redraws the preview, and the bends- and label control points.
mxImageShape.prototype.redrawHtmlShape = function()
Overrides mxShape.redraw to preserve the aspect ratio of images.
mxLabel.prototype.redraw = function()
Reconfigures this shape.
mxShape.prototype.redraw = function()
Creates and returns the SVG node(s) to represent this shape.
mxHandle.prototype.redraw = function()
Renders the shape for this handle.
mxGraphView.prototype.redrawBackgroundImage = function(backgroundImage,
bg)
Updates the bounds and redraws the background image.
mxCellRenderer.prototype.redrawCellOverlays = function(state,
forced)
Redraws the overlays for the given cell state.
mxCellRenderer.prototype.redrawControl = function(state,
forced)
Redraws the control for the given cell state.
mxEdgeHandler.prototype.redrawHandles = function()
Redraws the handles.
mxVertexHandler.prototype.redrawHandles = function()
Redraws the handles.
mxShape.prototype.redrawHtmlShape = function()
Allow optimization by replacing VML with HTML.
mxLabel.prototype.redrawHtmlShape = function()
Generic background painting implementation.
mxText.prototype.redrawHtmlShape = function()
Updates the HTML node(s) to reflect the latest bounds and scale.
mxConnectionHandler.prototype.redrawIcons = function(icons,
state)
Redraws the given array of mxImageShapes.
mxEdgeSegmentHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates the position of the custom bends.
mxEdgeHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates and redraws the inner bends.
mxElbowEdgeHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates and redraws the inner bends.
mxCellRenderer.prototype.redrawLabel = function(state,
forced)
Redraws the label for the given cell state.
mxActor.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxCloud.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxCylinder.prototype.redrawPath = function(c,
x,
y,
w,
h,
isForeground)
Draws the path for this shape.
mxHexagon.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxTriangle.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxShape.prototype.redrawShape = function()
Updates the SVG or VML shape.
mxFastOrganicLayout.prototype.reduceTemperature = function()
Reduces the temperature of the layout from an initial setting in a linear fashion to zero.
mxCodec.prototype.reference = function(obj)
Hook for subclassers to implement a custom method for retrieving IDs from objects.
mxEdgeHandler.prototype.refresh = function()
Refreshes the bends of this handler.
mxGraph.prototype.refresh = function(cell)
Clears all cell states or the states for the hierarchy starting at the given cell and validates the graph.
mxGraphView.prototype.refresh = function()
Clears the view if currentRoot is not null and revalidates.
mxOutline.prototype.refresh = function()
Invokes update and revalidate the outline.
mxSelectionCellsHandler.prototype.refresh = function()
Reloads or updates all handlers.
mxEditor.prototype.refreshTasks = function (div)
Updates the contents of the tasks window using createTasks.
register: function(codec)
Registers a new codec and associates the name of the template constructor in the codec with the codec object.
mxCellRenderer.registerShape = function(key,
shape)
Registers the given constructor under the specified key in this instance of the renderer.
relativeCcw: function(x1,
y1,
x2,
y2,
px,
py)
Returns 1 if the given point on the right side of the segment, 0 if its on the segment, and -1 if the point is on the left side of the segment.
release: function(element)
Removes the known listeners from the given DOM node and its descendants.
mxShape.prototype.releaseSvgGradients = function(grads)
Paints the line shape.
mxCell.prototype.remove = function(index)
Removes the child at the specified index from the child array and returns the child that was removed.
mxDictionary.prototype.remove = function(key)
Removes the value for the given key and returns the value that has been removed.
mxGraphModel.prototype.remove = function(cell)
Removes the specified cell from the model using mxChildChange and adds the change to the current transaction.
remove: function(obj,
array)
Removes all occurrences of the given object in the given array or object.
removeAllListeners: function(element)
Removes all listeners from the given element.
removeAllStylenames: function(style)
Removes all stylenames from the given style and returns the updated style.
mxGraphSelectionModel.prototype.removeCell = function(cell)
Removes the specified mxCell from the selection and fires a select event for the remaining cells.
mxGraph.prototype.removeCellOverlay = function(cell,
overlay)
Removes and returns the given mxCellOverlay from the given cell.
mxGraph.prototype.removeCellOverlays = function(cell)
Removes all mxCellOverlays from the given cell.
removeCells: function(graph,
cells)
Hook to remove the given cells from the given graph after a cut operation.
mxGraph.prototype.removeCells = function(cells,
includeEdges)
Removes the given cells from the graph including all connected edges if includeEdges is true.
mxGraphSelectionModel.prototype.removeCells = function(cells)
mxGraph.prototype.removeCellsFromParent = function(cells)
Removes the specified cells from their parents and adds them to the default parent.
removeCursors: function(element)
Removes the cursors from the style of the given DOM node and its descendants.
mxDragSource.prototype.removeDragElement = function()
Removes and destroys the dragElement.
mxCell.prototype.removeEdge = function(edge,
isOutgoing)
Removes the specified edge from the edge array and returns the edge.
mxCell.prototype.removeFromParent = function()
Removes the cell from its parent.
mxCell.prototype.removeFromTerminal = function(isSource)
Removes the edge from its source or target terminal.
removeGestureListeners: function(node,
startListener,
moveListener,
endListener)
Removes the given listeners from mousedown, mousemove, mouseup and the respective touch events if mxClient.IS_TOUCH is true.
mxEdgeHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxGraphHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxVertexHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxGraph.prototype.removeImageBundle = function(bundle)
Removes the specified mxImageBundle.
removeListener: function()
Removes the specified listener from the given element.
mxEventSource.prototype.removeListener = function(funct)
Removes all occurrences of the given listener from eventListeners.
mxDragSource.prototype.removeListeners = function()
Actives the given graph as a drop target.
mxGraph.prototype.removeMouseListener = function(listener)
Removes the specified graph listener.
mxEdgeHandler.prototype.removePoint = function(state,
index)
Removes the control point at the given index from the given state.
mxGraph.prototype.removeSelectionCell = function(cell)
Removes the given cell from the selection.
mxGraph.prototype.removeSelectionCells = function(cells)
Removes the given cells from the selection.
mxGraphView.prototype.removeState = function(cell)
Removes and returns the mxCellState for the given cell.
mxGraph.prototype.removeStateForCell = function(cell)
Removes all cached information for the given cell and its descendants.
removeStylename: function(style,
stylename)
Removes all occurrences of the specified stylename in the given style and returns the updated style.
removeWhitespace: function(node,
before)
Removes the sibling text nodes for the given node that only consists of tabs, newlines and spaces.
mxPrintPreview.prototype.renderPage = function(w,
h,
dx,
dy,
content)
Creates a DIV that prints a single page of the given graph using the given scale and returns the DIV that represents the page.
mxCellHighlight.prototype.repaint = function()
Updates the highlight after a change of the model or view.
mxRubberband.prototype.repaint = function()
Computes the bounding box and updates the style of the div.
mxCoordinateAssignment.prototype.repositionValid = function(model,
cell,
rank,
position)
Determines whether or not a node may be moved to the specified x position on the specified rank
mxAbstractCanvas2D.prototype.reset = function()
Resets the state of this canvas.
mxAutoSaveManager.prototype.reset = function()
Resets all counters.
mxCellMarker.prototype.reset = function()
Resets the state of the cell marker.
mxConnectionHandler.prototype.reset = function()
Resets the state of this handler.
mxConstraintHandler.prototype.reset = function()
Resets the state of this handler.
mxDragSource.prototype.reset = function()
Stops and removes everything and restores the state of the object.
mxEdgeHandler.prototype.reset = function()
Resets the state of this handler.
mxGraphHandler.prototype.reset = function()
Resets the state of this handler.
mxRubberband.prototype.reset = function()
Resets the state of the rubberband selection.
mxSelectionCellsHandler.prototype.reset = function()
Resets all handlers.
mxSvgCanvas2D.prototype.reset = function()
Returns any offsets for rendering pixels.
mxTooltipHandler.prototype.reset = function(me,
restart)
Resets and/or restarts the timer to trigger the display of the tooltip.
mxHandle.prototype.reset = function()
Resets the state of this handle by setting its visibility to true.
mxGraph.prototype.resetEdge = function(edge)
Resets the control points of the given edge.
mxGraph.prototype.resetEdges = function(cells)
Resets the control points of the edges that are connected to the given cells if not both ends of the edge are in the given cells array.
mxEditor.prototype.resetFirstTime = function ()
Resets the cookie that is used to remember if the editor has already been used.
mxEditor.prototype.resetHistory = function ()
Resets the command history, modified state and counters.
mxToolbar.prototype.resetMode = function(forced)
Selects the default mode and resets the state of the previously selected mode.
mxTooltipHandler.prototype.resetTimer = function()
Resets the timer.
mxGraphView.prototype.resetValidationState = function()
Resets the current validation state.
mxCellEditor.prototype.resize = function()
Returns modified.
mxDivResizer.prototype.resize = function()
Updates the style of the DIV after the window has been resized.
mxGraph.prototype.resizeCell = function(cell,
bounds,
recurse)
Sets the bounds of the given cell using resizeCells.
mxVertexHandler.prototype.resizeCell = function(cell,
dx,
dy,
index,
gridEnabled,
constrained,
recurse)
Uses the given vector to change the bounds of the given cell in the graph using mxGraph.resizeCell.
mxGraph.prototype.resizeCells = function(cells,
bounds,
recurse)
Sets the bounds of the given cells and fires a mxEvent.RESIZE_CELLS event while the transaction is in progress.
mxGraph.prototype.resizeChildCells = function(cell,
newGeo)
Resizes the child cells of the given cell for the given new geometry with respect to the current geometry of the cell.
Boolean specifying if the height should be updated.
mxSwimlaneManager.prototype.resizeSwimlane = function(swimlane,
w,
h,
parentHorizontal)
Called from cellsResized for all swimlanes that are not ignored to update the size of the siblings and the size of the parent swimlanes, recursively, if bubbling is true.
Boolean specifying if the width should be updated.
resolve: function(root,
path)
Returns the cell for the specified cell path using the given root as the root of the path.
mxCellRenderer.prototype.resolveColor = function(state,
field,
key)
Resolves special keywords ‘inherit’, ‘indicated’ and ‘swimlane’ and sets the respective color on the shape.
mxAbstractCanvas2D.prototype.restore = function()
Restores the current state.
mxXmlCanvas2D.prototype.restore = function()
Restores the drawing state.
mxGraphModel.prototype.restoreClone = function(clone,
cell,
mapping)
Inner helper method for restoring the connections in a network of cloned cells.
mxGraphView.prototype.revalidate = function()
Revalidates the complete view with all cell states.
mxCellStatePreview.prototype.revalidateState = function(state,
dx,
dy,
visitor)
reversePortConstraints: function(constraint)
Reverse the port constraint bitmask.
RhombusPerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a rhombus (aka diamond) perimeter.
mxGraphModel.prototype.rootChanged = function(root)
Inner callback to change the root of the model and update the internal datastructures, such as cells and nextId.
mxGeometry.prototype.rotate = function(angle,
cx)
Rotates the geometry by the given angle around the given center.
mxSvgCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxVmlCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxXmlCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Rotates and/or flips the output around a given center.
mxRectangle.prototype.rotate90 = function()
Rotates this rectangle by 90 degree around its center point.
Rotates the given cell to the given rotation.
mxCellRenderer.prototype.rotateLabelBounds = function(state,
bounds)
Adds the shape rotation to the given label bounds and applies the alignment and offsets.
mxAbstractCanvas2D.prototype.rotatePoint = function(x,
y,
theta,
cx,
cy)
Rotates the given point and returns the result as an mxPoint.
mxHandle.prototype.rotatePoint = function(pt,
alpha)
Rotates the point by the given angle.
mxVertexHandler.prototype.roundAngle = function(angle)
Hook for rounding the angle.
mxEdgeHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled width or height.
mxGraphHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled vector.
mxVertexHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled width or height.
mxSvgCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Sets the current path to a rounded rectangle.
mxXmlCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Puts a rounded rectangle into the drawing buffer.
mxParallelEdgeLayout.prototype.route = function(edge,
x,
y)
Routes the given edge via the given point.
rtrim: function(str,
chars)
Strips all whitespaces from the end of the string.
mxHierarchicalLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
mxSwimlaneLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
+
mxCoordinateAssignment.prototype.rankCoordinates = function(rankValue,
graph,
model)
Sets up the layout in an initial positioning.
mxCoordinateAssignment.prototype.rankMedianPosition = function(rankValue,
model,
nextRankValue)
Performs median minimisation over one rank.
mxEditor.prototype.readGraphModel = function (node)
Reads the specified XML node into the existing graph model and resets the command history and modified state.
mxShape.prototype.reconfigure = function()
Reconfigures this shape.
mxSvgCanvas2D.prototype.rect = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.rect = function(x,
y,
w,
h)
Sets the current path to a rectangle.
mxXmlCanvas2D.prototype.rect = function(x,
y,
w,
h)
Puts a rectangle into the drawing buffer.
rectangleIntersectsSegment: function(bounds,
p1,
p2)
Returns true if the given rectangle intersects the given segment.
RectanglePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a rectangular perimeter for the given bounds.
redirectMouseEvents: function(node,
graph,
state,
down,
move,
up,
dblClick)
Redirects the mouse events from the given DOM node to the graph dispatch loop using the event and given state as event arguments.
mxEditor.prototype.redo = function ()
Redo the last change in graph.
mxUndoableEdit.prototype.redo = function()
Redoes all changes in this edit.
mxUndoManager.prototype.redo = function()
Redoes the last change.
mxEdgeSegmentHandler.prototype.redraw = function()
Overridden to invoke refresh before the redraw.
mxCellRenderer.prototype.redraw = function(state,
force,
rendering)
Updates the bounds or points and scale of the shapes for the given cell state.
mxEdgeHandler.prototype.redraw = function()
Redraws the preview, and the bends- and label control points.
mxImageShape.prototype.redrawHtmlShape = function()
Overrides mxShape.redraw to preserve the aspect ratio of images.
mxLabel.prototype.redraw = function()
Reconfigures this shape.
mxShape.prototype.redraw = function()
Creates and returns the SVG node(s) to represent this shape.
mxHandle.prototype.redraw = function()
Renders the shape for this handle.
mxGraphView.prototype.redrawBackgroundImage = function(backgroundImage,
bg)
Updates the bounds and redraws the background image.
mxCellRenderer.prototype.redrawCellOverlays = function(state,
forced)
Redraws the overlays for the given cell state.
mxCellRenderer.prototype.redrawControl = function(state,
forced)
Redraws the control for the given cell state.
mxEdgeHandler.prototype.redrawHandles = function()
Redraws the handles.
mxVertexHandler.prototype.redrawHandles = function()
Redraws the handles.
mxShape.prototype.redrawHtmlShape = function()
Allow optimization by replacing VML with HTML.
mxLabel.prototype.redrawHtmlShape = function()
Generic background painting implementation.
mxText.prototype.redrawHtmlShape = function()
Updates the HTML node(s) to reflect the latest bounds and scale.
mxConnectionHandler.prototype.redrawIcons = function(icons,
state)
Redraws the given array of mxImageShapes.
mxEdgeSegmentHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates the position of the custom bends.
mxEdgeHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates and redraws the inner bends.
mxElbowEdgeHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates and redraws the inner bends.
mxCellRenderer.prototype.redrawLabel = function(state,
forced)
Redraws the label for the given cell state.
mxActor.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxCloud.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxCylinder.prototype.redrawPath = function(c,
x,
y,
w,
h,
isForeground)
Draws the path for this shape.
mxHexagon.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxTriangle.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxShape.prototype.redrawShape = function()
Updates the SVG or VML shape.
mxFastOrganicLayout.prototype.reduceTemperature = function()
Reduces the temperature of the layout from an initial setting in a linear fashion to zero.
mxCodec.prototype.reference = function(obj)
Hook for subclassers to implement a custom method for retrieving IDs from objects.
mxEdgeHandler.prototype.refresh = function()
Refreshes the bends of this handler.
mxGraph.prototype.refresh = function(cell)
Clears all cell states or the states for the hierarchy starting at the given cell and validates the graph.
mxGraphView.prototype.refresh = function()
Clears the view if currentRoot is not null and revalidates.
mxOutline.prototype.refresh = function()
Invokes update and revalidate the outline.
mxSelectionCellsHandler.prototype.refresh = function()
Reloads or updates all handlers.
mxEditor.prototype.refreshTasks = function (div)
Updates the contents of the tasks window using createTasks.
register: function(codec)
Registers a new codec and associates the name of the template constructor in the codec with the codec object.
mxCellRenderer.registerShape = function(key,
shape)
Registers the given constructor under the specified key in this instance of the renderer.
relativeCcw: function(x1,
y1,
x2,
y2,
px,
py)
Returns 1 if the given point on the right side of the segment, 0 if its on the segment, and -1 if the point is on the left side of the segment.
release: function(element)
Removes the known listeners from the given DOM node and its descendants.
mxShape.prototype.releaseSvgGradients = function(grads)
Paints the line shape.
mxCell.prototype.remove = function(index)
Removes the child at the specified index from the child array and returns the child that was removed.
mxDictionary.prototype.remove = function(key)
Removes the value for the given key and returns the value that has been removed.
mxGraphModel.prototype.remove = function(cell)
Removes the specified cell from the model using mxChildChange and adds the change to the current transaction.
remove: function(obj,
array)
Removes all occurrences of the given object in the given array or object.
removeAllListeners: function(element)
Removes all listeners from the given element.
removeAllStylenames: function(style)
Removes all stylenames from the given style and returns the updated style.
mxGraphSelectionModel.prototype.removeCell = function(cell)
Removes the specified mxCell from the selection and fires a select event for the remaining cells.
mxGraph.prototype.removeCellOverlay = function(cell,
overlay)
Removes and returns the given mxCellOverlay from the given cell.
mxGraph.prototype.removeCellOverlays = function(cell)
Removes all mxCellOverlays from the given cell.
removeCells: function(graph,
cells)
Hook to remove the given cells from the given graph after a cut operation.
mxGraph.prototype.removeCells = function(cells,
includeEdges)
Removes the given cells from the graph including all connected edges if includeEdges is true.
mxGraphSelectionModel.prototype.removeCells = function(cells)
mxGraph.prototype.removeCellsFromParent = function(cells)
Removes the specified cells from their parents and adds them to the default parent.
removeCursors: function(element)
Removes the cursors from the style of the given DOM node and its descendants.
mxDragSource.prototype.removeDragElement = function()
Removes and destroys the dragElement.
mxCell.prototype.removeEdge = function(edge,
isOutgoing)
Removes the specified edge from the edge array and returns the edge.
mxCell.prototype.removeFromParent = function()
Removes the cell from its parent.
mxCell.prototype.removeFromTerminal = function(isSource)
Removes the edge from its source or target terminal.
removeGestureListeners: function(node,
startListener,
moveListener,
endListener)
Removes the given listeners from mousedown, mousemove, mouseup and the respective touch events if mxClient.IS_TOUCH is true.
mxEdgeHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxGraphHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxVertexHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxGraph.prototype.removeImageBundle = function(bundle)
Removes the specified mxImageBundle.
removeListener: function()
Removes the specified listener from the given element.
mxEventSource.prototype.removeListener = function(funct)
Removes all occurrences of the given listener from eventListeners.
mxDragSource.prototype.removeListeners = function()
Actives the given graph as a drop target.
mxGraph.prototype.removeMouseListener = function(listener)
Removes the specified graph listener.
mxEdgeHandler.prototype.removePoint = function(state,
index)
Removes the control point at the given index from the given state.
mxGraph.prototype.removeSelectionCell = function(cell)
Removes the given cell from the selection.
mxGraph.prototype.removeSelectionCells = function(cells)
Removes the given cells from the selection.
mxGraphView.prototype.removeState = function(cell)
Removes and returns the mxCellState for the given cell.
mxGraph.prototype.removeStateForCell = function(cell)
Removes all cached information for the given cell and its descendants.
removeStylename: function(style,
stylename)
Removes all occurrences of the specified stylename in the given style and returns the updated style.
removeWhitespace: function(node,
before)
Removes the sibling text nodes for the given node that only consists of tabs, newlines and spaces.
mxPrintPreview.prototype.renderPage = function(w,
h,
dx,
dy,
content)
Creates a DIV that prints a single page of the given graph using the given scale and returns the DIV that represents the page.
mxCellHighlight.prototype.repaint = function()
Updates the highlight after a change of the model or view.
mxRubberband.prototype.repaint = function()
Computes the bounding box and updates the style of the div.
mxCoordinateAssignment.prototype.repositionValid = function(model,
cell,
rank,
position)
Determines whether or not a node may be moved to the specified x position on the specified rank
mxAbstractCanvas2D.prototype.reset = function()
Resets the state of this canvas.
mxAutoSaveManager.prototype.reset = function()
Resets all counters.
mxCellMarker.prototype.reset = function()
Resets the state of the cell marker.
mxConnectionHandler.prototype.reset = function()
Resets the state of this handler.
mxConstraintHandler.prototype.reset = function()
Resets the state of this handler.
mxDragSource.prototype.reset = function()
Stops and removes everything and restores the state of the object.
mxEdgeHandler.prototype.reset = function()
Resets the state of this handler.
mxGraphHandler.prototype.reset = function()
Resets the state of this handler.
mxRubberband.prototype.reset = function()
Resets the state of the rubberband selection.
mxSelectionCellsHandler.prototype.reset = function()
Resets all handlers.
mxSvgCanvas2D.prototype.reset = function()
Returns any offsets for rendering pixels.
mxTooltipHandler.prototype.reset = function(me,
restart)
Resets and/or restarts the timer to trigger the display of the tooltip.
mxHandle.prototype.reset = function()
Resets the state of this handle by setting its visibility to true.
mxGraph.prototype.resetEdge = function(edge)
Resets the control points of the given edge.
mxGraph.prototype.resetEdges = function(cells)
Resets the control points of the edges that are connected to the given cells if not both ends of the edge are in the given cells array.
mxEditor.prototype.resetFirstTime = function ()
Resets the cookie that is used to remember if the editor has already been used.
mxEditor.prototype.resetHistory = function ()
Resets the command history, modified state and counters.
mxToolbar.prototype.resetMode = function(forced)
Selects the default mode and resets the state of the previously selected mode.
mxTooltipHandler.prototype.resetTimer = function()
Resets the timer.
mxGraphView.prototype.resetValidationState = function()
Resets the current validation state.
mxCellEditor.prototype.resize = function()
Returns modified.
mxDivResizer.prototype.resize = function()
Updates the style of the DIV after the window has been resized.
mxGraph.prototype.resizeCell = function(cell,
bounds,
recurse)
Sets the bounds of the given cell using resizeCells.
mxVertexHandler.prototype.resizeCell = function(cell,
dx,
dy,
index,
gridEnabled,
constrained,
recurse)
Uses the given vector to change the bounds of the given cell in the graph using mxGraph.resizeCell.
mxGraph.prototype.resizeCells = function(cells,
bounds,
recurse)
Sets the bounds of the given cells and fires a mxEvent.RESIZE_CELLS event while the transaction is in progress.
mxGraph.prototype.resizeChildCells = function(cell,
newGeo)
Resizes the child cells of the given cell for the given new geometry with respect to the current geometry of the cell.
Boolean specifying if the height should be updated.
mxSwimlaneManager.prototype.resizeSwimlane = function(swimlane,
w,
h,
parentHorizontal)
Called from cellsResized for all swimlanes that are not ignored to update the size of the siblings and the size of the parent swimlanes, recursively, if bubbling is true.
Boolean specifying if the width should be updated.
resolve: function(root,
path)
Returns the cell for the specified cell path using the given root as the root of the path.
mxCellRenderer.prototype.resolveColor = function(state,
field,
key)
Resolves special keywords ‘inherit’, ‘indicated’ and ‘swimlane’ and sets the respective color on the shape.
mxAbstractCanvas2D.prototype.restore = function()
Restores the current state.
mxXmlCanvas2D.prototype.restore = function()
Restores the drawing state.
mxGraphModel.prototype.restoreClone = function(clone,
cell,
mapping)
Inner helper method for restoring the connections in a network of cloned cells.
mxGraphView.prototype.revalidate = function()
Revalidates the complete view with all cell states.
mxCellStatePreview.prototype.revalidateState = function(state,
dx,
dy,
visitor)
reversePortConstraints: function(constraint)
Reverse the port constraint bitmask.
RhombusPerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a rhombus (aka diamond) perimeter.
mxGraphModel.prototype.rootChanged = function(root)
Inner callback to change the root of the model and update the internal datastructures, such as cells and nextId.
mxGeometry.prototype.rotate = function(angle,
cx)
Rotates the geometry by the given angle around the given center.
mxSvgCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxVmlCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxXmlCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Rotates and/or flips the output around a given center.
mxRectangle.prototype.rotate90 = function()
Rotates this rectangle by 90 degree around its center point.
Rotates the given cell to the given rotation.
mxCellRenderer.prototype.rotateLabelBounds = function(state,
bounds)
Adds the shape rotation to the given label bounds and applies the alignment and offsets.
mxAbstractCanvas2D.prototype.rotatePoint = function(x,
y,
theta,
cx,
cy)
Rotates the given point and returns the result as an mxPoint.
mxHandle.prototype.rotatePoint = function(pt,
alpha)
Rotates the point by the given angle.
mxVertexHandler.prototype.roundAngle = function(angle)
Hook for rounding the angle.
mxEdgeHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled width or height.
mxGraphHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled vector.
mxVertexHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled width or height.
mxSvgCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Sets the current path to a rounded rectangle.
mxXmlCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Puts a rounded rectangle into the drawing buffer.
mxParallelEdgeLayout.prototype.route = function(edge,
x,
y)
Routes the given edge via the given point.
rtrim: function(str,
chars)
Strips all whitespaces from the end of the string.
mxHierarchicalLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
mxSwimlaneLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions16.html b/docs/js-api/index/Functions16.html index ea6495ead..8ae26970a 100644 --- a/docs/js-api/index/Functions16.html +++ b/docs/js-api/index/Functions16.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 save
 scale
 scaleAndTranslate, mxGraphView
 scaleCell, mxGraph
 scrollCellToVisible, mxGraph
 scrollPointToVisible, mxGraph
 scrollRectToVisible, mxGraph
 SegmentConnector, mxEdgeStyle
 selectAll, mxGraph
 selectCell, mxGraph
 selectCellForEvent, mxGraph
 selectCells
 selectCellsForEvent, mxGraph
 selectChildCell, mxGraph
 selectDelayed, mxGraphHandler
 selectMode, mxToolbar
 selectNextCell, mxGraph
 selectParentCell, mxGraph
 selectPreviousCell, mxGraph
 selectRegion, mxGraph
 selectVertices, mxGraph
 send, mxXmlRequest
 setAbsoluteTerminalPoint, mxCellState
 setAddEnabled, mxSwimlaneManager
 setAllowDanglingEdges, mxGraph
 setAllowEval, mxGraphView
 setAllowLoops, mxGraph
 setAlpha
 setAttribute
 setAutoSizeCells, mxGraph
 setBackgroundImage, mxGraph
 setBaseDomain, mxUrlConverter
 setBaseUrl, mxUrlConverter
 setBinary, mxXmlRequest
 setBorder, mxGraph
 setBubbling, mxLayoutManager
 setCell, mxGraphSelectionModel
 setCellHeights, mxCompactTreeLayout
 setCellLocations, mxCoordinateAssignment
 setCells
 setCellsBendable, mxGraph
 setCellsCloneable, mxGraph
 setCellsDeletable, mxGraph
 setCellsDisconnectable, mxGraph
 setCellsEditable, mxGraph
 setCellsMovable, mxGraph
 setCellsResizable, mxGraph
 setCellsSelectable, mxGraph
 setCellStyle, mxGraph
 setCellStyleFlags
 setCellStyles
 setCellWarning, mxGraph
 setCloneEnabled, mxGraphHandler
 setCloneInvalidEdges, mxGraph
 setClosable, mxWindow
 setCollapsed
 setConnectable
 setConnectableEdges, mxGraph
 setConnectionConstraint, mxGraph
 setConstrainChildren, mxGraph
 setConstrainChildrenOnResize, mxGraph
 setCreateIds, mxGraphModel
 setCreateTarget, mxConnectionHandler
 setCurrentRoot, mxGraphView
 setCurrentState, mxCellMarker
 setCursor
 setDashed
 setDashPattern
 setDefaultParent, mxGraph
 setDisconnectOnMove, mxGraph
 setDropEnabled, mxGraph
 setEdge, mxCell
 setEdgePoints, mxGraphLayout
 setEdgePosition, mxCoordinateAssignment
 setEdgeStyleEnabled, mxGraphLayout
 setEnabled
 setEnterStopsCellEditing, mxGraph
 setEscapeEnabled, mxGraph
 setEventsEnabled, mxEventSource
 setEventSource, mxEventSource
 setExtendParents, mxGraph
 setExtendParentsOnAdd, mxGraph
 setFillColor
 setFontBackgroundColor, mxXmlCanvas2D
 setFontBorderColor, mxXmlCanvas2D
 setFontColor
 setFontFamily
 setFontSize
 setFontStyle
 setGeneralPurposeVariable
 setGeometry
 setGradient
 setGraph
 setGraphBounds, mxGraphView
 setGraphContainer, mxEditor
 setGridEnabled
 setGridSize, mxGraph
 setGuidesEnabled, mxDragSource
 setHideOnHover, mxTooltipHandler
 setHighlightColor
 setHorizontal, mxSwimlaneManager
 setHotspot, mxCellMarker
 setHotspotEnabled, mxCellMarker
 setHtmlLabels, mxGraph
 setId, mxCell
 setImage, mxWindow
 setInnerHtml, mxText
 setInvokesStopCellEditing, mxGraph
 setLineCap
 setLineJoin
 setLink
 setLocation, mxWindow
 setLocked, mxGraph
 setMaximizable, mxWindow
 setMinimizable, mxWindow
 setMiterLimit
 setMode, mxEditor
 setModified
 setMoveEnabled, mxGraphHandler
 setMultigraph, mxGraph
 setOpacity, mxUtils
 setOrthogonalEdge, mxGraphLayout
 setPanning, mxGraph
 setPanningEnabled, mxPanningHandler
 setParent, mxCell
 setPinchEnabled, mxPanningHandler
 setPortsEnabled, mxGraph
 setPosition, mxVertexHandler
 setPrefixedStyle, mxUtils
 setPreviewColor, mxEdgeHandler
 setRect, mxRectangle
 setRecursiveResize, mxGraph
 setRemoveCellsFromParent, mxGraphHandler
 setRendering, mxGraphView
 setRequestHeaders, mxXmlRequest
 setResizable, mxWindow
 setResizeContainer, mxGraph
 setResizeEnabled, mxSwimlaneManager
 setRoot, mxGraphModel
 setScale, mxGraphView
 setScrollable, mxWindow
 setSelectEnabled, mxGraphHandler
 setSelectionCell, mxGraph
 setSelectionCells, mxGraph
 setSelectionModel, mxGraph
 setShadow
 setShadowAlpha
 setShadowColor
 setShadowOffset
 setShiftDownwards, mxSpaceManager
 setShiftRightwards, mxSpaceManager
 setSingleSelection, mxGraphSelectionModel
 setSize, mxWindow
 setSplitEnabled, mxGraph
 setStates
 setStatus, mxEditor
 setStatusContainer, mxEditor
 setStrokeColor
 setStrokeWidth
 setStyle
 setStyleFlag, mxUtils
 setStylesheet, mxGraph
 setSwimlaneNesting, mxGraph
 setSwimlaneSelectionEnabled, mxGraph
 setTerminal
 setTerminalPoint, mxGeometry
 setTerminals, mxGraphModel
 setTextContent, mxUtils
 setTitle, mxWindow
 setTitleContainer, mxEditor
 setTolerance, mxGraph
 setToolbarContainer, mxEditor
 setTooltips, mxGraph
 setTranslate, mxGraphView
 setTransparentBackgroundImage, mxShape
 setValue
 setVertex, mxCell
 setVertexLabelsMovable, mxGraph
 setVertexLocation
 setVisible
 setVisibleTerminalState, mxCellState
 setX, mxGraphAbstractHierarchyCell
 setY, mxGraphAbstractHierarchyCell
 setZoomEnabled, mxOutline
 shiftCell, mxSpaceManager
 shouldRemoveCellsFromParent, mxGraphHandler
 show
 showHelp, mxEditor
 showMenu, mxPopupMenu
 showOutline, mxEditor
 showProperties, mxEditor
 showSubmenu, mxPopupMenu
 showTasks, mxEditor
 SideToSide, mxEdgeStyle
 simulate, mxXmlRequest
 sizeDidChange, mxGraph
 snap
 snapPoint, mxVertexHandler
 sortCells, mxUtils
 sortOutgoingEdges, mxCompactTreeLayout
 source, mxOutline
 splitEdge, mxGraph
 start
 startAnimation, mxAnimation
 startDrag, mxDragSource
 startEditing
 startEditingAtCell, mxGraph
 stateValidated, mxGraphView
 stopAnimation, mxAnimation
 stopDrag, mxDragSource
 stopEditing
 stopRecursion, mxMorphing
 stroke
 styleForCellChanged, mxGraphModel
 styles, mxStylesheet
 submit, mxUtils
 swap, mxGeometry
 swapBounds, mxGraph
 swapStyles, mxEditor
 swimlaneAdded, mxSwimlaneManager
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 save
 scale
 scaleAndTranslate, mxGraphView
 scaleCell, mxGraph
 scrollCellToVisible, mxGraph
 scrollPointToVisible, mxGraph
 scrollRectToVisible, mxGraph
 SegmentConnector, mxEdgeStyle
 selectAll, mxGraph
 selectCell, mxGraph
 selectCellForEvent, mxGraph
 selectCells
 selectCellsForEvent, mxGraph
 selectChildCell, mxGraph
 selectDelayed, mxGraphHandler
 selectMode, mxToolbar
 selectNextCell, mxGraph
 selectParentCell, mxGraph
 selectPreviousCell, mxGraph
 selectRegion, mxGraph
 selectVertices, mxGraph
 send, mxXmlRequest
 setAbsoluteTerminalPoint, mxCellState
 setAddEnabled, mxSwimlaneManager
 setAllowDanglingEdges, mxGraph
 setAllowEval, mxGraphView
 setAllowLoops, mxGraph
 setAlpha
 setAttribute
 setAutoSizeCells, mxGraph
 setBackgroundImage, mxGraph
 setBaseDomain, mxUrlConverter
 setBaseUrl, mxUrlConverter
 setBinary, mxXmlRequest
 setBorder, mxGraph
 setBubbling, mxLayoutManager
 setCell, mxGraphSelectionModel
 setCellHeights, mxCompactTreeLayout
 setCellLocations, mxCoordinateAssignment
 setCells
 setCellsBendable, mxGraph
 setCellsCloneable, mxGraph
 setCellsDeletable, mxGraph
 setCellsDisconnectable, mxGraph
 setCellsEditable, mxGraph
 setCellsMovable, mxGraph
 setCellsResizable, mxGraph
 setCellsSelectable, mxGraph
 setCellStyle, mxGraph
 setCellStyleFlags
 setCellStyles
 setCellWarning, mxGraph
 setCloneEnabled, mxGraphHandler
 setCloneInvalidEdges, mxGraph
 setClosable, mxWindow
 setCollapsed
 setConnectable
 setConnectableEdges, mxGraph
 setConnectionConstraint, mxGraph
 setConstrainChildren, mxGraph
 setConstrainChildrenOnResize, mxGraph
 setCreateIds, mxGraphModel
 setCreateTarget, mxConnectionHandler
 setCurrentRoot, mxGraphView
 setCurrentState, mxCellMarker
 setCursor
 setDashed
 setDashPattern
 setDefaultParent, mxGraph
 setDisconnectOnMove, mxGraph
 setDropEnabled, mxGraph
 setEdge, mxCell
 setEdgePoints, mxGraphLayout
 setEdgePosition, mxCoordinateAssignment
 setEdgeStyleEnabled, mxGraphLayout
 setEnabled
 setEnterStopsCellEditing, mxGraph
 setEscapeEnabled, mxGraph
 setEventsEnabled, mxEventSource
 setEventSource, mxEventSource
 setExtendParents, mxGraph
 setExtendParentsOnAdd, mxGraph
 setFillColor
 setFontBackgroundColor, mxXmlCanvas2D
 setFontBorderColor, mxXmlCanvas2D
 setFontColor
 setFontFamily
 setFontSize
 setFontStyle
 setGeneralPurposeVariable
 setGeometry
 setGradient
 setGraph
 setGraphBounds, mxGraphView
 setGraphContainer, mxEditor
 setGridEnabled
 setGridSize, mxGraph
 setGuidesEnabled, mxDragSource
 setHideOnHover, mxTooltipHandler
 setHighlightColor
 setHorizontal, mxSwimlaneManager
 setHotspot, mxCellMarker
 setHotspotEnabled, mxCellMarker
 setHtmlLabels, mxGraph
 setId, mxCell
 setImage, mxWindow
 setInnerHtml, mxText
 setInvokesStopCellEditing, mxGraph
 setLineCap
 setLineJoin
 setLink
 setLocation, mxWindow
 setLocked, mxGraph
 setMaximizable, mxWindow
 setMinimizable, mxWindow
 setMiterLimit
 setMode, mxEditor
 setModified
 setMoveEnabled, mxGraphHandler
 setMultigraph, mxGraph
 setOpacity, mxUtils
 setOrthogonalEdge, mxGraphLayout
 setPanning, mxGraph
 setPanningEnabled, mxPanningHandler
 setParent, mxCell
 setPinchEnabled, mxPanningHandler
 setPortsEnabled, mxGraph
 setPosition, mxVertexHandler
 setPrefixedStyle, mxUtils
 setPreviewColor, mxEdgeHandler
 setRect, mxRectangle
 setRecursiveResize, mxGraph
 setRemoveCellsFromParent, mxGraphHandler
 setRendering, mxGraphView
 setRequestHeaders, mxXmlRequest
 setResizable, mxWindow
 setResizeContainer, mxGraph
 setResizeEnabled, mxSwimlaneManager
 setRoot, mxGraphModel
 setScale, mxGraphView
 setScrollable, mxWindow
 setSelectEnabled, mxGraphHandler
 setSelectionCell, mxGraph
 setSelectionCells, mxGraph
 setSelectionModel, mxGraph
 setShadow
 setShadowAlpha
 setShadowColor
 setShadowOffset
 setShiftDownwards, mxSpaceManager
 setShiftRightwards, mxSpaceManager
 setSingleSelection, mxGraphSelectionModel
 setSize, mxWindow
 setSplitEnabled, mxGraph
 setStates
 setStatus, mxEditor
 setStatusContainer, mxEditor
 setStrokeColor
 setStrokeWidth
 setStyle
 setStyleFlag, mxUtils
 setStylesheet, mxGraph
 setSwimlaneNesting, mxGraph
 setSwimlaneSelectionEnabled, mxGraph
 setTerminal
 setTerminalPoint, mxGeometry
 setTerminals, mxGraphModel
 setTextContent, mxUtils
 setTitle, mxWindow
 setTitleContainer, mxEditor
 setTolerance, mxGraph
 setToolbarContainer, mxEditor
 setTooltips, mxGraph
 setTranslate, mxGraphView
 setTransparentBackgroundImage, mxShape
 setValue
 setVertex, mxCell
 setVertexLabelsMovable, mxGraph
 setVertexLocation
 setVisible
 setVisibleTerminalState, mxCellState
 setX, mxGraphAbstractHierarchyCell
 setY, mxGraphAbstractHierarchyCell
 setZoomEnabled, mxOutline
 shiftCell, mxSpaceManager
 shouldRemoveCellsFromParent, mxGraphHandler
 show
 showHelp, mxEditor
 showMenu, mxPopupMenu
 showOutline, mxEditor
 showProperties, mxEditor
 showSubmenu, mxPopupMenu
 showTasks, mxEditor
 SideToSide, mxEdgeStyle
 simulate, mxXmlRequest
 sizeDidChange, mxGraph
 snap
 snapPoint, mxVertexHandler
 sortCells, mxUtils
 sortOutgoingEdges, mxCompactTreeLayout
 source, mxOutline
 splitEdge, mxGraph
 start
 startAnimation, mxAnimation
 startDrag, mxDragSource
 startEditing
 startEditingAtCell, mxGraph
 stateValidated, mxGraphView
 stopAnimation, mxAnimation
 stopDrag, mxDragSource
 stopEditing
 stopRecursion, mxMorphing
 stroke
 styleForCellChanged, mxGraphModel
 styles, mxStylesheet
 submit, mxUtils
 swap, mxGeometry
 swapBounds, mxGraph
 swapStyles, mxEditor
 swimlaneAdded, mxSwimlaneManager
-
mxAbstractCanvas2D.prototype.save = function()
Saves the current state.
mxAutoSaveManager.prototype.save = function()
Empty hook that is called if the graph should be saved.
mxEditor.prototype.save = function (url,
linefeed)
Posts the string returned by writeGraphModel to the given URL or the URL returned by getUrlPost.
mxXmlCanvas2D.prototype.save = function()
Saves the drawing state.
mxAbstractCanvas2D.prototype.scale = function(value)
Scales the current state.
mxGeometry.prototype.scale = function(sx,
sy,
fixedAspect)
Scales the geometry by the given amount.
mxXmlCanvas2D.prototype.scale = function(value)
Scales the output.
mxGraphView.prototype.scaleAndTranslate = function(scale,
dx,
dy)
Sets the scale and translation and fires a scale and translate event before calling revalidate followed by mxGraph.sizeDidChange.
mxGraph.prototype.scaleCell = function(cell,
dx,
dy,
recurse)
Scales the points, position and size of the given cell according to the given vertical and horizontal scaling factors.
mxGraph.prototype.scrollCellToVisible = function(cell,
center)
Pans the graph so that it shows the given cell.
mxGraph.prototype.scrollPointToVisible = function(x,
y,
extend,
border)
Scrolls the graph to the given point, extending the graph container if specified.
mxGraph.prototype.scrollRectToVisible = function(rect)
Pans the graph so that it shows the given rectangle.
SegmentConnector: function(state,
source,
target,
hints,
result)
Implements an orthogonal edge style.
mxGraph.prototype.selectAll = function(parent)
Selects all children of the given parent cell or the children of the default parent if no parent is specified.
mxGraph.prototype.selectCell = function(isNext,
isParent,
isChild)
Selects the next, parent, first child or previous cell, if all arguments are false.
mxGraph.prototype.selectCellForEvent = function(cell,
evt)
Selects the given cell by either adding it to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
mxConnectionHandler.prototype.selectCells = function(edge,
target)
Selects the given edge after adding a new connection.
mxGraph.prototype.selectCells = function(vertices,
edges,
parent)
Selects all vertices and/or edges depending on the given boolean arguments recursively, starting at the given parent or the default parent if no parent is specified.
mxGraph.prototype.selectCellsForEvent = function(cells,
evt)
Selects the given cells by either adding them to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
mxGraph.prototype.selectChildCell = function()
Selects the first child cell.
mxGraphHandler.prototype.selectDelayed = function(me)
Implements the delayed selection for the given mouse event.
mxToolbar.prototype.selectMode = function(domNode,
funct)
Resets the state of the previously selected mode and displays the given DOM node as selected.
mxGraph.prototype.selectNextCell = function()
Selects the next cell.
mxGraph.prototype.selectParentCell = function()
Selects the parent cell.
mxGraph.prototype.selectPreviousCell = function()
Selects the previous cell.
mxGraph.prototype.selectRegion = function(rect,
evt)
Selects and returns the cells inside the given rectangle for the specified event.
mxGraph.prototype.selectVertices = function(parent)
Select all vertices inside the given parent or the default parent.
mxXmlRequest.prototype.send = function(onload,
onerror)
Send the request to the target URL using the specified functions to process the response asychronously.
mxCellState.prototype.setAbsoluteTerminalPoint = function (point,
isSource)
Sets the first or last point in absolutePoints depending on isSource.
mxSwimlaneManager.prototype.setAddEnabled = function(value)
Sets addEnabled.
mxGraph.prototype.setAllowDanglingEdges = function(value)
Specifies if dangling edges are allowed, that is, if edges are allowed that do not have a source and/or target terminal defined.
mxGraphView.prototype.setAllowEval = function(value)
Sets allowEval.
mxGraph.prototype.setAllowLoops = function(value)
Specifies if loops are allowed.
mxAbstractCanvas2D.prototype.setAlpha = function(value)
Sets the current alpha.
mxXmlCanvas2D.prototype.setAlpha = function(value)
Sets the current alpha.
mxCell.prototype.setAttribute = function(name,
value)
Sets the specified attribute on the user object if it is an XML node.
mxCodec.prototype.setAttribute = function(node,
attribute,
value)
Sets the attribute on the specified node to value.
mxGraph.prototype.setAutoSizeCells = function(value)
Specifies if cell sizes should be automatically updated after a label change.
mxGraph.prototype.setBackgroundImage = function(image)
Sets the new backgroundImage.
mxUrlConverter.prototype.setBaseDomain = function(value)
Sets baseDomain.
mxUrlConverter.prototype.setBaseUrl = function(value)
Sets baseUrl.
mxXmlRequest.prototype.setBinary = function(value)
Sets binary.
mxGraph.prototype.setBorder = function(value)
Sets the value of border.
mxLayoutManager.prototype.setBubbling = function(value)
Sets bubbling.
mxGraphSelectionModel.prototype.setCell = function(cell)
Selects the specified mxCell using setCells.
mxCompactTreeLayout.prototype.setCellHeights = function(node,
rank)
Set the cells heights (relative to the layout direction) when the tops of each rank are to be aligned
mxCoordinateAssignment.prototype.setCellLocations = function(graph,
model)
Sets the cell locations in the facade to those stored after this layout processing step has completed.
setCells: function(cells)
Sets the cells in the clipboard.
mxGraphSelectionModel.prototype.setCells = function(cells)
Selects the given array of mxCells and fires a change event.
mxGraph.prototype.setCellsBendable = function(value)
Specifies if the graph should allow bending of edges.
mxGraph.prototype.setCellsCloneable = function(value)
Specifies if the graph should allow cloning of cells by holding down the control key while cells are being moved.
mxGraph.prototype.setCellsDeletable = function(value)
Sets cellsDeletable.
mxGraph.prototype.setCellsDisconnectable = function(value)
Sets cellsDisconnectable.
mxGraph.prototype.setCellsEditable = function(value)
Specifies if the graph should allow in-place editing for cell labels.
mxGraph.prototype.setCellsMovable = function(value)
Specifies if the graph should allow moving of cells.
mxGraph.prototype.setCellsResizable = function(value)
Specifies if the graph should allow resizing of cells.
mxGraph.prototype.setCellsSelectable = function(value)
Sets cellsSelectable.
mxGraph.prototype.setCellStyle = function(style,
cells)
Sets the style of the specified cells.
mxGraph.prototype.setCellStyleFlags = function(key,
flag,
value,
cells)
Sets or toggles the given bit for the given key in the styles of the specified cells.
setCellStyleFlags: function(model,
cells,
key,
flag,
value)
Sets or toggles the flag bit for the given key in the cell’s styles.
mxGraph.prototype.setCellStyles = function(key,
value,
cells)
Sets the key to value in the styles of the given cells.
setCellStyles: function(model,
cells,
key,
value)
Assigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.
mxGraph.prototype.setCellWarning = function(cell,
warning,
img,
isSelect)
Creates an overlay for the given cell using the warning and image or warningImage and returns the new mxCellOverlay.
mxGraphHandler.prototype.setCloneEnabled = function(value)
Sets cloneEnabled.
mxGraph.prototype.setCloneInvalidEdges = function(value)
Specifies if edges should be inserted when cloned but not valid wrt.
mxWindow.prototype.setClosable = function(closable)
Sets the image associated with the window.
mxCell.prototype.setCollapsed = function(collapsed)
Sets the collapsed state.
mxGraphModel.prototype.setCollapsed = function(cell,
collapsed)
Sets the collapsed state of the given mxCell using mxCollapseChange and adds the change to the current transaction.
mxCell.prototype.setConnectable = function(connectable)
Sets the connectable state.
mxGraph.prototype.setConnectable = function(connectable)
Specifies if the graph should allow new connections.
mxGraph.prototype.setConnectableEdges = function(value)
Specifies if edges should be connectable.
mxGraph.prototype.setConnectionConstraint = function(edge,
terminal,
source,
constraint)
Sets the mxConnectionConstraint that describes the given connection point.
mxGraph.prototype.setConstrainChildren = function(value)
Sets constrainChildren.
mxGraph.prototype.setConstrainChildrenOnResize = function(value)
Sets constrainChildrenOnResize.
mxGraphModel.prototype.setCreateIds = function(value)
Sets createIds.
mxConnectionHandler.prototype.setCreateTarget = function(value)
Sets createTarget.
mxGraphView.prototype.setCurrentRoot = function(root)
Sets and returns the current root and fires an undo event before calling mxGraph.sizeDidChange.
mxCellMarker.prototype.setCurrentState = function(state,
me,
color)
Sets and marks the current valid state.
mxCellState.prototype.setCursor = function (cursor)
Sets the given cursor on the shape and text shape.
mxShape.prototype.setCursor = function(cursor)
Sets the cursor on the given shape.
mxAbstractCanvas2D.prototype.setDashed = function(value)
Enables or disables dashed lines.
mxXmlCanvas2D.prototype.setDashed = function(value)
Enables or disables dashed lines.
mxAbstractCanvas2D.prototype.setDashPattern = function(value)
Sets the current dash pattern.
mxXmlCanvas2D.prototype.setDashPattern = function(value)
Sets the current dash pattern.
mxGraph.prototype.setDefaultParent = function(cell)
Sets the defaultParent to the given cell.
mxGraph.prototype.setDisconnectOnMove = function(value)
Specifies if edges should be disconnected when moved.
mxGraph.prototype.setDropEnabled = function(value)
Specifies if the graph should allow dropping of cells onto or into other cells.
mxCell.prototype.setEdge = function(edge)
Specifies if the cell is an edge.
mxGraphLayout.prototype.setEdgePoints = function(edge,
points)
Replaces the array of mxPoints in the geometry of the given edge with the given array of mxPoints.
mxCoordinateAssignment.prototype.setEdgePosition = function(cell)
Fixes the control points
mxGraphLayout.prototype.setEdgeStyleEnabled = function(edge,
value)
Disables or enables the edge style of the given edge.
mxAutoSaveManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxCellMarker.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxConnectionHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxConstraintHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxDragSource.prototype.setEnabled = function(value)
Sets enabled.
mxGraph.prototype.setEnabled = function(value)
Specifies if the graph should allow any interactions.
mxGraphHandler.prototype.setEnabled = function(value)
Sets enabled.
mxKeyHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling by updating enabled.
mxLayoutManager.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxOutline.prototype.setEnabled = function(value)
Enables or disables event handling.
mxPopupMenu.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxRubberband.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxSelectionCellsHandler.prototype.setEnabled = function(value)
Sets enabled.
mxSpaceManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxSwimlaneManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxTooltipHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxUrlConverter.prototype.setEnabled = function(value)
Sets enabled.
mxGraph.prototype.setEnterStopsCellEditing = function(value)
Sets enterStopsCellEditing.
mxGraph.prototype.setEscapeEnabled = function(value)
Sets escapeEnabled.
mxEventSource.prototype.setEventsEnabled = function(value)
Sets eventsEnabled.
mxEventSource.prototype.setEventSource = function(value)
Sets eventSource.
mxGraph.prototype.setExtendParents = function(value)
Sets extendParents.
mxGraph.prototype.setExtendParentsOnAdd = function(value)
Sets extendParentsOnAdd.
mxAbstractCanvas2D.prototype.setFillColor = function(value)
Sets the current fill color.
mxXmlCanvas2D.prototype.setFillColor = function(value)
Sets the current fill color.
mxXmlCanvas2D.prototype.setFontBackgroundColor = function(value)
Sets the current font background color.
mxXmlCanvas2D.prototype.setFontBorderColor = function(value)
Sets the current font border color.
mxAbstractCanvas2D.prototype.setFontColor = function(value)
Sets the current font color.
mxXmlCanvas2D.prototype.setFontColor = function(value)
Sets the current font color.
mxAbstractCanvas2D.prototype.setFontFamily = function(value)
Sets the current font family.
mxXmlCanvas2D.prototype.setFontFamily = function(value)
Sets the current font family.
mxAbstractCanvas2D.prototype.setFontSize = function(value)
Sets the current font size.
mxXmlCanvas2D.prototype.setFontSize = function(value)
Sets the current font size.
mxAbstractCanvas2D.prototype.setFontStyle = function(value)
Sets the current font style.
mxXmlCanvas2D.prototype.setFontStyle = function(value)
Sets the current font style.
mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable = function(
   layer,
   value
)
Set the value of temp for the specified layer
mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable = function(layer,
value)
Set the value of temp for the specified layer
mxGraphHierarchyNode.prototype.setGeneralPurposeVariable = function(layer,
value)
Set the value of temp for the specified layer
mxCell.prototype.setGeometry = function(geometry)
Sets the mxGeometry to be used as the geometry.
mxGraphModel.prototype.setGeometry = function(cell,
geometry)
Sets the mxGeometry of the given mxCell.
mxAbstractCanvas2D.prototype.setGradient = function(color1,
color2,
x,
y,
w,
h,
direction,
alpha1,
alpha2)
Sets the current gradient.
mxXmlCanvas2D.prototype.setGradient = function(color1,
color2,
x,
y,
w,
h,
direction,
alpha1,
alpha2)
Sets the gradient.
mxAutoSaveManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxLayoutManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxSpaceManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxSwimlaneManager.prototype.setGraph = function(graph)
Sets the graph that the manager operates on.
mxGraphView.prototype.setGraphBounds = function(value)
Sets graphBounds.
mxEditor.prototype.setGraphContainer = function (container)
Sets the graph’s container using mxGraph.init.
mxDragSource.prototype.setGridEnabled = function(value)
Sets gridEnabled.
mxGraph.prototype.setGridEnabled = function(value)
Specifies if the grid should be enabled.
mxGraph.prototype.setGridSize = function(value)
Sets gridSize.
mxDragSource.prototype.setGuidesEnabled = function(value)
Sets guidesEnabled.
mxTooltipHandler.prototype.setHideOnHover = function(value)
Sets hideOnHover.
mxCellHighlight.prototype.setHighlightColor = function(color)
Sets the color of the rectangle used to highlight drop targets.
mxGraphHandler.prototype.setHighlightColor = function(color)
Sets the color of the rectangle used to highlight drop targets.
mxSwimlaneManager.prototype.setHorizontal = function(value)
Sets horizontal.
mxCellMarker.prototype.setHotspot = function(hotspot)
Sets the hotspot.
mxCellMarker.prototype.setHotspotEnabled = function(enabled)
Specifies whether the hotspot should be used in intersects.
mxGraph.prototype.setHtmlLabels = function(value)
Sets htmlLabels.
mxCell.prototype.setId = function(id)
Sets the Id of the cell to the given string.
mxWindow.prototype.setImage = function(image)
Sets the image associated with the window.
Sets the inner HTML of the given element to the value.
mxGraph.prototype.setInvokesStopCellEditing = function(value)
Sets invokesStopCellEditing.
mxAbstractCanvas2D.prototype.setLineCap = function(value)
Sets the current line cap.
mxXmlCanvas2D.prototype.setLineCap = function(value)
Sets the line cap.
mxAbstractCanvas2D.prototype.setLineJoin = function(value)
Sets the current line join.
mxXmlCanvas2D.prototype.setLineJoin = function(value)
Sets the line join.
mxAbstractCanvas2D.prototype.setLink = function(link)
Sets the current link.
mxSvgCanvas2D.prototype.setLink = function(link)
Experimental implementation for hyperlinks.
mxWindow.prototype.setLocation = function(x,
y)
Sets the upper, left corner of the window.
Sets if any cell may be moved, sized, bended, disconnected, edited or selected.
mxWindow.prototype.setMaximizable = function(maximizable)
Sets if the window is maximizable.
mxWindow.prototype.setMinimizable = function(minimizable)
Sets if the window is minimizable.
mxAbstractCanvas2D.prototype.setMiterLimit = function(value)
Sets the current miter limit.
mxXmlCanvas2D.prototype.setMiterLimit = function(value)
Sets the miter limit.
mxEditor.prototype.setMode = function(modename)
Puts the graph into the specified mode.
mxCellEditor.prototype.setModified = function(value)
Sets modified to the specified boolean value.
mxEditor.prototype.setModified = function (value)
Sets modified to the specified boolean value.
mxGraphHandler.prototype.setMoveEnabled = function(value)
Sets moveEnabled.
mxGraph.prototype.setMultigraph = function(value)
Specifies if the graph should allow multiple connections between the same pair of vertices.
setOpacity: function(node,
value)
Sets the opacity of the specified DOM node to the given value in %.
mxGraphLayout.prototype.setOrthogonalEdge = function(edge,
value)
Disables or enables orthogonal end segments of the given edge.
mxGraph.prototype.setPanning = function(enabled)
Specifies if panning should be enabled.
mxPanningHandler.prototype.setPanningEnabled = function(value)
Sets panningEnabled.
mxCell.prototype.setParent = function(parent)
Sets the parent cell.
mxPanningHandler.prototype.setPinchEnabled = function(value)
Sets pinchEnabled.
mxGraph.prototype.setPortsEnabled = function(value)
Specifies if the ports should be enabled.
mxHandle.prototype.setPosition = function(bounds,
pt,
me)
Hooks for subclassers to update the style in the state.
setPrefixedStyle: function()
Adds the given style with the standard name and an optional vendor prefix for the current browser.
mxEdgeHandler.prototype.setPreviewColor = function(color)
Sets the color of the preview to the given value.
mxRectangle.prototype.setRect = function(x,
y,
w,
h)
Sets this rectangle to the specified values
mxGraph.prototype.setRecursiveResize = function(value)
Sets recursiveResize.
mxGraphHandler.prototype.setRemoveCellsFromParent = function(value)
Sets removeCellsFromParent.
mxGraphView.prototype.setRendering = function(value)
Sets rendering.
mxXmlRequest.prototype.setRequestHeaders = function(request,
params)
Sets the headers for the given request and parameters.
mxWindow.prototype.setResizable = function(resizable)
Sets if the window should be resizable.
mxGraph.prototype.setResizeContainer = function(value)
Sets resizeContainer.
mxSwimlaneManager.prototype.setResizeEnabled = function(value)
Sets resizeEnabled.
mxGraphModel.prototype.setRoot = function(root)
Sets the root of the model using mxRootChange and adds the change to the current transaction.
mxGraphView.prototype.setScale = function(value)
Sets the scale and fires a scale event before calling revalidate followed by mxGraph.sizeDidChange.
mxWindow.prototype.setScrollable = function(scrollable)
Sets if the window contents should be scrollable.
mxGraphHandler.prototype.setSelectEnabled = function(value)
Sets selectEnabled.
mxGraph.prototype.setSelectionCell = function(cell)
Sets the selection cell.
mxGraph.prototype.setSelectionCells = function(cells)
Sets the selection cell.
mxGraph.prototype.setSelectionModel = function(selectionModel)
Sets the mxSelectionModel that contains the selection.
mxAbstractCanvas2D.prototype.setShadow = function(enabled)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadow = function(value)
Enables or disables shadows.
mxAbstractCanvas2D.prototype.setShadowAlpha = function(value)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowAlpha = function(value)
Sets the current shadows alpha.
mxAbstractCanvas2D.prototype.setShadowColor = function(value)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowColor = function(value)
Sets the current shadow color.
mxAbstractCanvas2D.prototype.setShadowOffset = function(dx,
dy)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowOffset = function(dx,
dy)
Sets the current shadow offset.
mxSpaceManager.prototype.setShiftDownwards = function(value)
Enables or disables event handling.
mxSpaceManager.prototype.setShiftRightwards = function(value)
Enables or disables event handling.
mxGraphSelectionModel.prototype.setSingleSelection = function(singleSelection)
Sets the singleSelection flag.
mxWindow.prototype.setSize = function(width,
height)
Sets the size of the window.
mxGraph.prototype.setSplitEnabled = function(value)
Specifies if the graph should allow dropping of cells onto or into other cells.
mxGraphView.prototype.setStates = function(value)
Sets states.
mxGuide.prototype.setStates = function(states)
Sets the mxCellStates that should be used for alignment.
mxEditor.prototype.setStatus = function (message)
Display the specified message in the status bar.
mxEditor.prototype.setStatusContainer = function (container)
Creates the status using the specified container.
mxAbstractCanvas2D.prototype.setStrokeColor = function(value)
Sets the current stroke color.
mxXmlCanvas2D.prototype.setStrokeColor = function(value)
Sets the current stroke color.
mxAbstractCanvas2D.prototype.setStrokeWidth = function(value)
Sets the current stroke width.
mxXmlCanvas2D.prototype.setStrokeWidth = function(value)
Sets the current stroke width.
mxCell.prototype.setStyle = function(style)
Sets the string to be used as the style.
mxGraphModel.prototype.setStyle = function(cell,
style)
Sets the style of the given mxCell using mxStyleChange and adds the change to the current transaction.
setStyle: function(style,
key,
value)
Adds or removes the given key, value pair to the style and returns the new style.
setStyleFlag: function(style,
key,
flag,
value)
Sets or removes the given key from the specified style and returns the new style.
mxGraph.prototype.setStylesheet = function(stylesheet)
Sets the mxStylesheet that defines the style.
mxGraph.prototype.setSwimlaneNesting = function(value)
Specifies if swimlanes can be nested by drag and drop.
mxGraph.prototype.setSwimlaneSelectionEnabled = function(value)
Specifies if swimlanes should be selected if the mouse is released over their content area.
mxCell.prototype.setTerminal = function(terminal,
isSource)
Sets the source or target terminal and returns the new terminal.
mxGraphModel.prototype.setTerminal = function(edge,
terminal,
isSource)
Sets the source or target terminal of the given mxCell using mxTerminalChange and adds the change to the current transaction.
mxGeometry.prototype.setTerminalPoint = function(point,
isSource)
Sets the sourcePoint or targetPoint to the given mxPoint and returns the new point.
mxGraphModel.prototype.setTerminals = function(edge,
source,
target)
Sets the source and target mxCell of the given mxCell in a single transaction using setTerminal for each end of the edge.
setTextContent: function(node,
text)
Sets the text content of the specified node.
mxWindow.prototype.setTitle = function(title)
Sets the window title to the given string.
mxEditor.prototype.setTitleContainer = function (container)
Creates a listener to update the inner HTML of the specified DOM node with the value of getTitle.
mxGraph.prototype.setTolerance = function(value)
Sets tolerance.
mxEditor.prototype.setToolbarContainer = function (container)
Initializes the toolbar for the given container.
mxGraph.prototype.setTooltips = function (enabled)
Specifies if tooltips should be enabled.
mxGraphView.prototype.setTranslate = function(dx,
dy)
Sets the translation and fires a translate event before calling revalidate followed by mxGraph.sizeDidChange.
mxShape.prototype.setTransparentBackgroundImage = function(node)
Sets a transparent background CSS style to catch all events.
mxCell.prototype.setValue = function(value)
Sets the user object of the cell.
mxGraphModel.prototype.setValue = function(cell,
value)
Sets the user object of then given mxCell using mxValueChange and adds the change to the current transaction.
mxCell.prototype.setVertex = function(vertex)
Specifies if the cell is a vertex.
mxGraph.prototype.setVertexLabelsMovable = function(value)
Sets vertexLabelsMovable.
mxCoordinateAssignment.prototype.setVertexLocation = function(cell)
Fixes the position of the specified vertex.
mxGraphLayout.prototype.setVertexLocation = function(cell,
x,
y)
Sets the new position of the given cell taking into account the size of the bounding box if useBoundingBox is true.
mxCell.prototype.setVisible = function(visible)
Specifies if the cell is visible.
mxGraphModel.prototype.setVisible = function(cell,
visible)
Sets the visible state of the given mxCell using mxVisibleChange and adds the change to the current transaction.
setVisible: function(visible)
Shows or hides the console.
mxHandle.prototype.setVisible = function(visible)
Shows or hides this handle.
mxWindow.prototype.setVisible = function(visible)
Shows or hides the window depending on the given flag.
mxCellState.prototype.setVisibleTerminalState = function (terminalState,
source)
Sets the visible source or target terminal state.
mxGraphAbstractHierarchyCell.prototype.setX = function(layer,
value)
Set the value of x for the specified layer
mxGraphAbstractHierarchyCell.prototype.setY = function(layer,
value)
Set the value of y for the specified layer
mxOutline.prototype.setZoomEnabled = function(value)
Enables or disables the zoom handling by showing or hiding the respective handle.
mxSpaceManager.prototype.shiftCell = function(cell,
dx,
dy,
Ox0,
y0,
right,
bottom,
fx,
fy,
extendParent)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxGraphHandler.prototype.shouldRemoveCellsFromParent = function(parent,
cells,
evt)
Returns true if the given cells should be removed from the parent for the specified mousereleased event.
mxCellStatePreview.prototype.show = function(visitor)
show: function()
Shows the console.
mxMorphing.prototype.show = function(move)
Shows the changes in the given mxCellStatePreview.
mxTooltipHandler.prototype.show = function(tip,
x,
y)
Shows the tooltip for the specified cell and optional index at the specified location (with a vertical offset of 10 pixels).
show: function(graph,
doc,
x0,
y0,
w,
h)
Copies the styles and the markup from the graph’s container into the given document and removes all cursor styles.
mxWindow.prototype.show = function()
Shows the window.
mxEditor.prototype.showHelp = function (tasks)
Shows the help window.
mxPopupMenu.prototype.showMenu = function()
Shows the menu.
mxEditor.prototype.showOutline = function ()
Shows the outline window.
mxEditor.prototype.showProperties = function (cell)
Creates and shows the properties dialog for the given cell.
mxPopupMenu.prototype.showSubmenu = function(parent,
row)
Shows the submenu inside the given parent row.
mxEditor.prototype.showTasks = function ()
Shows the tasks window.
SideToSide: function (state,
source,
target,
points,
result)
Implements a vertical elbow edge.
mxXmlRequest.prototype.simulate = function(doc,
target)
Creates and posts a request to the given target URL using a dynamically created form inside the given document.
mxGraph.prototype.sizeDidChange = function()
Called when the size of the graph has changed.
mxGraph.prototype.snap = function(value)
Snaps the given numeric value to the grid if gridEnabled is true.
mxGraphHandler.prototype.snap = function(vector)
Snaps the given vector to the grid and returns the given mxPoint instance.
mxHandle.prototype.snapPoint = function(pt,
ignore)
Snaps the given point to the grid if ignore is false.
sortCells: function(cells,
ascending)
Sorts the given cells according to the order in the cell hierarchy.
mxCompactTreeLayout.prototype.sortOutgoingEdges = function(source,
edges)
Called if sortEdges is true to sort the array of outgoing edges in place.
Reference to the source mxGraph.
mxGraph.prototype.splitEdge = function(edge,
cells,
newEdge,
dx,
dy)
Splits the given edge by adding the newEdge between the previous source and the given cell and reconnecting the source of the given edge to the given cell.
mxConnectionHandler.prototype.start = function(state,
x,
y,
edgeState)
Starts a new connection for the given state and coordinates.
mxEdgeHandler.prototype.start = function(x,
y,
index)
Starts the handling of the mouse gesture.
mxGraphHandler.prototype.start = function(cell,
x,
y)
Starts the handling of the mouse gesture.
mxPanningHandler.prototype.start = function(me)
Starts panning at the given event.
mxRubberband.prototype.start = function(x,
y)
Sets the start point for the rubberband selection.
mxVertexHandler.prototype.start = function(x,
y,
index)
Starts the handling of the mouse gesture.
mxAnimation.prototype.startAnimation = function()
Starts the animation by repeatedly invoking updateAnimation.
mxDragSource.prototype.startDrag = function(evt)
Creates the dragElement using createDragElement.
mxCellEditor.prototype.startEditing = function(cell,
trigger)
Starts the editor for the given cell.
mxGraph.prototype.startEditing = function(evt)
Calls startEditingAtCell using the given cell or the first selection cell.
mxGraph.prototype.startEditingAtCell = function(cell,
evt)
Fires a startEditing event and invokes mxCellEditor.startEditing on editor.
mxGraphView.prototype.stateValidated = function(state)
Invoked when a state has been processed in validatePoints.
mxAnimation.prototype.stopAnimation = function()
Stops the animation by deleting the timer and fires an mxEvent.DONE.
mxDragSource.prototype.stopDrag = function()
Invokes removeDragElement.
mxCellEditor.prototype.stopEditing = function(cancel)
Stops the editor and applies the value if cancel is false.
mxGraph.prototype.stopEditing = function(cancel)
Stops the current editing and fires a editingStopped event.
mxMorphing.prototype.stopRecursion = function(state,
delta)
Returns true if the animation should not recursively find more deltas for children if the given parent state has been animated.
mxSvgCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxVmlCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxXmlCanvas2D.prototype.stroke = function()
Paints the outline of the current drawing buffer.
mxGraphModel.prototype.styleForCellChanged = function(cell,
style)
Inner callback to update the style of the given mxCell using mxCell.setStyle and return the previous style.
Maps from names to cell styles.
submit: function(url,
params,
doc,
target)
Submits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.
mxGeometry.prototype.swap = function()
Swaps the x, y, width and height with the values stored in alternateBounds and puts the previous values into alternateBounds as a rectangle.
mxGraph.prototype.swapBounds = function(cell,
willCollapse)
Swaps the alternate and the actual bounds in the geometry of the given cell invoking updateAlternateBounds before carrying out the swap.
mxEditor.prototype.swapStyles = function (first,
second)
Swaps the styles for the given names in the graph’s stylesheet and refreshes the graph.
mxSwimlaneManager.prototype.swimlaneAdded = function(swimlane)
Updates the size of the given swimlane to match that of any existing siblings swimlanes.
+
mxAbstractCanvas2D.prototype.save = function()
Saves the current state.
mxAutoSaveManager.prototype.save = function()
Empty hook that is called if the graph should be saved.
mxEditor.prototype.save = function (url,
linefeed)
Posts the string returned by writeGraphModel to the given URL or the URL returned by getUrlPost.
mxXmlCanvas2D.prototype.save = function()
Saves the drawing state.
mxAbstractCanvas2D.prototype.scale = function(value)
Scales the current state.
mxGeometry.prototype.scale = function(sx,
sy,
fixedAspect)
Scales the geometry by the given amount.
mxXmlCanvas2D.prototype.scale = function(value)
Scales the output.
mxGraphView.prototype.scaleAndTranslate = function(scale,
dx,
dy)
Sets the scale and translation and fires a scale and translate event before calling revalidate followed by mxGraph.sizeDidChange.
mxGraph.prototype.scaleCell = function(cell,
dx,
dy,
recurse)
Scales the points, position and size of the given cell according to the given vertical and horizontal scaling factors.
mxGraph.prototype.scrollCellToVisible = function(cell,
center)
Pans the graph so that it shows the given cell.
mxGraph.prototype.scrollPointToVisible = function(x,
y,
extend,
border)
Scrolls the graph to the given point, extending the graph container if specified.
mxGraph.prototype.scrollRectToVisible = function(rect)
Pans the graph so that it shows the given rectangle.
SegmentConnector: function(state,
source,
target,
hints,
result)
Implements an orthogonal edge style.
mxGraph.prototype.selectAll = function(parent)
Selects all children of the given parent cell or the children of the default parent if no parent is specified.
mxGraph.prototype.selectCell = function(isNext,
isParent,
isChild)
Selects the next, parent, first child or previous cell, if all arguments are false.
mxGraph.prototype.selectCellForEvent = function(cell,
evt)
Selects the given cell by either adding it to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
mxConnectionHandler.prototype.selectCells = function(edge,
target)
Selects the given edge after adding a new connection.
mxGraph.prototype.selectCells = function(vertices,
edges,
parent)
Selects all vertices and/or edges depending on the given boolean arguments recursively, starting at the given parent or the default parent if no parent is specified.
mxGraph.prototype.selectCellsForEvent = function(cells,
evt)
Selects the given cells by either adding them to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
mxGraph.prototype.selectChildCell = function()
Selects the first child cell.
mxGraphHandler.prototype.selectDelayed = function(me)
Implements the delayed selection for the given mouse event.
mxToolbar.prototype.selectMode = function(domNode,
funct)
Resets the state of the previously selected mode and displays the given DOM node as selected.
mxGraph.prototype.selectNextCell = function()
Selects the next cell.
mxGraph.prototype.selectParentCell = function()
Selects the parent cell.
mxGraph.prototype.selectPreviousCell = function()
Selects the previous cell.
mxGraph.prototype.selectRegion = function(rect,
evt)
Selects and returns the cells inside the given rectangle for the specified event.
mxGraph.prototype.selectVertices = function(parent)
Select all vertices inside the given parent or the default parent.
mxXmlRequest.prototype.send = function(onload,
onerror)
Send the request to the target URL using the specified functions to process the response asychronously.
mxCellState.prototype.setAbsoluteTerminalPoint = function (point,
isSource)
Sets the first or last point in absolutePoints depending on isSource.
mxSwimlaneManager.prototype.setAddEnabled = function(value)
Sets addEnabled.
mxGraph.prototype.setAllowDanglingEdges = function(value)
Specifies if dangling edges are allowed, that is, if edges are allowed that do not have a source and/or target terminal defined.
mxGraphView.prototype.setAllowEval = function(value)
Sets allowEval.
mxGraph.prototype.setAllowLoops = function(value)
Specifies if loops are allowed.
mxAbstractCanvas2D.prototype.setAlpha = function(value)
Sets the current alpha.
mxXmlCanvas2D.prototype.setAlpha = function(value)
Sets the current alpha.
mxCell.prototype.setAttribute = function(name,
value)
Sets the specified attribute on the user object if it is an XML node.
mxCodec.prototype.setAttribute = function(node,
attribute,
value)
Sets the attribute on the specified node to value.
mxGraph.prototype.setAutoSizeCells = function(value)
Specifies if cell sizes should be automatically updated after a label change.
mxGraph.prototype.setBackgroundImage = function(image)
Sets the new backgroundImage.
mxUrlConverter.prototype.setBaseDomain = function(value)
Sets baseDomain.
mxUrlConverter.prototype.setBaseUrl = function(value)
Sets baseUrl.
mxXmlRequest.prototype.setBinary = function(value)
Sets binary.
mxGraph.prototype.setBorder = function(value)
Sets the value of border.
mxLayoutManager.prototype.setBubbling = function(value)
Sets bubbling.
mxGraphSelectionModel.prototype.setCell = function(cell)
Selects the specified mxCell using setCells.
mxCompactTreeLayout.prototype.setCellHeights = function(node,
rank)
Set the cells heights (relative to the layout direction) when the tops of each rank are to be aligned
mxCoordinateAssignment.prototype.setCellLocations = function(graph,
model)
Sets the cell locations in the facade to those stored after this layout processing step has completed.
setCells: function(cells)
Sets the cells in the clipboard.
mxGraphSelectionModel.prototype.setCells = function(cells)
Selects the given array of mxCells and fires a change event.
mxGraph.prototype.setCellsBendable = function(value)
Specifies if the graph should allow bending of edges.
mxGraph.prototype.setCellsCloneable = function(value)
Specifies if the graph should allow cloning of cells by holding down the control key while cells are being moved.
mxGraph.prototype.setCellsDeletable = function(value)
Sets cellsDeletable.
mxGraph.prototype.setCellsDisconnectable = function(value)
Sets cellsDisconnectable.
mxGraph.prototype.setCellsEditable = function(value)
Specifies if the graph should allow in-place editing for cell labels.
mxGraph.prototype.setCellsMovable = function(value)
Specifies if the graph should allow moving of cells.
mxGraph.prototype.setCellsResizable = function(value)
Specifies if the graph should allow resizing of cells.
mxGraph.prototype.setCellsSelectable = function(value)
Sets cellsSelectable.
mxGraph.prototype.setCellStyle = function(style,
cells)
Sets the style of the specified cells.
mxGraph.prototype.setCellStyleFlags = function(key,
flag,
value,
cells)
Sets or toggles the given bit for the given key in the styles of the specified cells.
setCellStyleFlags: function(model,
cells,
key,
flag,
value)
Sets or toggles the flag bit for the given key in the cell’s styles.
mxGraph.prototype.setCellStyles = function(key,
value,
cells)
Sets the key to value in the styles of the given cells.
setCellStyles: function(model,
cells,
key,
value)
Assigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.
mxGraph.prototype.setCellWarning = function(cell,
warning,
img,
isSelect)
Creates an overlay for the given cell using the warning and image or warningImage and returns the new mxCellOverlay.
mxGraphHandler.prototype.setCloneEnabled = function(value)
Sets cloneEnabled.
mxGraph.prototype.setCloneInvalidEdges = function(value)
Specifies if edges should be inserted when cloned but not valid wrt.
mxWindow.prototype.setClosable = function(closable)
Sets the image associated with the window.
mxCell.prototype.setCollapsed = function(collapsed)
Sets the collapsed state.
mxGraphModel.prototype.setCollapsed = function(cell,
collapsed)
Sets the collapsed state of the given mxCell using mxCollapseChange and adds the change to the current transaction.
mxCell.prototype.setConnectable = function(connectable)
Sets the connectable state.
mxGraph.prototype.setConnectable = function(connectable)
Specifies if the graph should allow new connections.
mxGraph.prototype.setConnectableEdges = function(value)
Specifies if edges should be connectable.
mxGraph.prototype.setConnectionConstraint = function(edge,
terminal,
source,
constraint)
Sets the mxConnectionConstraint that describes the given connection point.
mxGraph.prototype.setConstrainChildren = function(value)
Sets constrainChildren.
mxGraph.prototype.setConstrainChildrenOnResize = function(value)
Sets constrainChildrenOnResize.
mxGraphModel.prototype.setCreateIds = function(value)
Sets createIds.
mxConnectionHandler.prototype.setCreateTarget = function(value)
Sets createTarget.
mxGraphView.prototype.setCurrentRoot = function(root)
Sets and returns the current root and fires an undo event before calling mxGraph.sizeDidChange.
mxCellMarker.prototype.setCurrentState = function(state,
me,
color)
Sets and marks the current valid state.
mxCellState.prototype.setCursor = function (cursor)
Sets the given cursor on the shape and text shape.
mxShape.prototype.setCursor = function(cursor)
Sets the cursor on the given shape.
mxAbstractCanvas2D.prototype.setDashed = function(value)
Enables or disables dashed lines.
mxXmlCanvas2D.prototype.setDashed = function(value)
Enables or disables dashed lines.
mxAbstractCanvas2D.prototype.setDashPattern = function(value)
Sets the current dash pattern.
mxXmlCanvas2D.prototype.setDashPattern = function(value)
Sets the current dash pattern.
mxGraph.prototype.setDefaultParent = function(cell)
Sets the defaultParent to the given cell.
mxGraph.prototype.setDisconnectOnMove = function(value)
Specifies if edges should be disconnected when moved.
mxGraph.prototype.setDropEnabled = function(value)
Specifies if the graph should allow dropping of cells onto or into other cells.
mxCell.prototype.setEdge = function(edge)
Specifies if the cell is an edge.
mxGraphLayout.prototype.setEdgePoints = function(edge,
points)
Replaces the array of mxPoints in the geometry of the given edge with the given array of mxPoints.
mxCoordinateAssignment.prototype.setEdgePosition = function(cell)
Fixes the control points
mxGraphLayout.prototype.setEdgeStyleEnabled = function(edge,
value)
Disables or enables the edge style of the given edge.
mxAutoSaveManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxCellMarker.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxConnectionHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxConstraintHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxDragSource.prototype.setEnabled = function(value)
Sets enabled.
mxGraph.prototype.setEnabled = function(value)
Specifies if the graph should allow any interactions.
mxGraphHandler.prototype.setEnabled = function(value)
Sets enabled.
mxKeyHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling by updating enabled.
mxLayoutManager.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxOutline.prototype.setEnabled = function(value)
Enables or disables event handling.
mxPopupMenu.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxRubberband.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxSelectionCellsHandler.prototype.setEnabled = function(value)
Sets enabled.
mxSpaceManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxSwimlaneManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxTooltipHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxUrlConverter.prototype.setEnabled = function(value)
Sets enabled.
mxGraph.prototype.setEnterStopsCellEditing = function(value)
Sets enterStopsCellEditing.
mxGraph.prototype.setEscapeEnabled = function(value)
Sets escapeEnabled.
mxEventSource.prototype.setEventsEnabled = function(value)
Sets eventsEnabled.
mxEventSource.prototype.setEventSource = function(value)
Sets eventSource.
mxGraph.prototype.setExtendParents = function(value)
Sets extendParents.
mxGraph.prototype.setExtendParentsOnAdd = function(value)
Sets extendParentsOnAdd.
mxAbstractCanvas2D.prototype.setFillColor = function(value)
Sets the current fill color.
mxXmlCanvas2D.prototype.setFillColor = function(value)
Sets the current fill color.
mxXmlCanvas2D.prototype.setFontBackgroundColor = function(value)
Sets the current font background color.
mxXmlCanvas2D.prototype.setFontBorderColor = function(value)
Sets the current font border color.
mxAbstractCanvas2D.prototype.setFontColor = function(value)
Sets the current font color.
mxXmlCanvas2D.prototype.setFontColor = function(value)
Sets the current font color.
mxAbstractCanvas2D.prototype.setFontFamily = function(value)
Sets the current font family.
mxXmlCanvas2D.prototype.setFontFamily = function(value)
Sets the current font family.
mxAbstractCanvas2D.prototype.setFontSize = function(value)
Sets the current font size.
mxXmlCanvas2D.prototype.setFontSize = function(value)
Sets the current font size.
mxAbstractCanvas2D.prototype.setFontStyle = function(value)
Sets the current font style.
mxXmlCanvas2D.prototype.setFontStyle = function(value)
Sets the current font style.
mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable = function(
   layer,
   value
)
Set the value of temp for the specified layer
mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable = function(layer,
value)
Set the value of temp for the specified layer
mxGraphHierarchyNode.prototype.setGeneralPurposeVariable = function(layer,
value)
Set the value of temp for the specified layer
mxCell.prototype.setGeometry = function(geometry)
Sets the mxGeometry to be used as the geometry.
mxGraphModel.prototype.setGeometry = function(cell,
geometry)
Sets the mxGeometry of the given mxCell.
mxAbstractCanvas2D.prototype.setGradient = function(color1,
color2,
x,
y,
w,
h,
direction,
alpha1,
alpha2)
Sets the current gradient.
mxXmlCanvas2D.prototype.setGradient = function(color1,
color2,
x,
y,
w,
h,
direction,
alpha1,
alpha2)
Sets the gradient.
mxAutoSaveManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxLayoutManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxSpaceManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxSwimlaneManager.prototype.setGraph = function(graph)
Sets the graph that the manager operates on.
mxGraphView.prototype.setGraphBounds = function(value)
Sets graphBounds.
mxEditor.prototype.setGraphContainer = function (container)
Sets the graph’s container using mxGraph.init.
mxDragSource.prototype.setGridEnabled = function(value)
Sets gridEnabled.
mxGraph.prototype.setGridEnabled = function(value)
Specifies if the grid should be enabled.
mxGraph.prototype.setGridSize = function(value)
Sets gridSize.
mxDragSource.prototype.setGuidesEnabled = function(value)
Sets guidesEnabled.
mxTooltipHandler.prototype.setHideOnHover = function(value)
Sets hideOnHover.
mxCellHighlight.prototype.setHighlightColor = function(color)
Sets the color of the rectangle used to highlight drop targets.
mxGraphHandler.prototype.setHighlightColor = function(color)
Sets the color of the rectangle used to highlight drop targets.
mxSwimlaneManager.prototype.setHorizontal = function(value)
Sets horizontal.
mxCellMarker.prototype.setHotspot = function(hotspot)
Sets the hotspot.
mxCellMarker.prototype.setHotspotEnabled = function(enabled)
Specifies whether the hotspot should be used in intersects.
mxGraph.prototype.setHtmlLabels = function(value)
Sets htmlLabels.
mxCell.prototype.setId = function(id)
Sets the Id of the cell to the given string.
mxWindow.prototype.setImage = function(image)
Sets the image associated with the window.
Sets the inner HTML of the given element to the value.
mxGraph.prototype.setInvokesStopCellEditing = function(value)
Sets invokesStopCellEditing.
mxAbstractCanvas2D.prototype.setLineCap = function(value)
Sets the current line cap.
mxXmlCanvas2D.prototype.setLineCap = function(value)
Sets the line cap.
mxAbstractCanvas2D.prototype.setLineJoin = function(value)
Sets the current line join.
mxXmlCanvas2D.prototype.setLineJoin = function(value)
Sets the line join.
mxAbstractCanvas2D.prototype.setLink = function(link)
Sets the current link.
mxSvgCanvas2D.prototype.setLink = function(link)
Experimental implementation for hyperlinks.
mxWindow.prototype.setLocation = function(x,
y)
Sets the upper, left corner of the window.
Sets if any cell may be moved, sized, bended, disconnected, edited or selected.
mxWindow.prototype.setMaximizable = function(maximizable)
Sets if the window is maximizable.
mxWindow.prototype.setMinimizable = function(minimizable)
Sets if the window is minimizable.
mxAbstractCanvas2D.prototype.setMiterLimit = function(value)
Sets the current miter limit.
mxXmlCanvas2D.prototype.setMiterLimit = function(value)
Sets the miter limit.
mxEditor.prototype.setMode = function(modename)
Puts the graph into the specified mode.
mxCellEditor.prototype.setModified = function(value)
Sets modified to the specified boolean value.
mxEditor.prototype.setModified = function (value)
Sets modified to the specified boolean value.
mxGraphHandler.prototype.setMoveEnabled = function(value)
Sets moveEnabled.
mxGraph.prototype.setMultigraph = function(value)
Specifies if the graph should allow multiple connections between the same pair of vertices.
setOpacity: function(node,
value)
Sets the opacity of the specified DOM node to the given value in %.
mxGraphLayout.prototype.setOrthogonalEdge = function(edge,
value)
Disables or enables orthogonal end segments of the given edge.
mxGraph.prototype.setPanning = function(enabled)
Specifies if panning should be enabled.
mxPanningHandler.prototype.setPanningEnabled = function(value)
Sets panningEnabled.
mxCell.prototype.setParent = function(parent)
Sets the parent cell.
mxPanningHandler.prototype.setPinchEnabled = function(value)
Sets pinchEnabled.
mxGraph.prototype.setPortsEnabled = function(value)
Specifies if the ports should be enabled.
mxHandle.prototype.setPosition = function(bounds,
pt,
me)
Hooks for subclassers to update the style in the state.
setPrefixedStyle: function()
Adds the given style with the standard name and an optional vendor prefix for the current browser.
mxEdgeHandler.prototype.setPreviewColor = function(color)
Sets the color of the preview to the given value.
mxRectangle.prototype.setRect = function(x,
y,
w,
h)
Sets this rectangle to the specified values
mxGraph.prototype.setRecursiveResize = function(value)
Sets recursiveResize.
mxGraphHandler.prototype.setRemoveCellsFromParent = function(value)
Sets removeCellsFromParent.
mxGraphView.prototype.setRendering = function(value)
Sets rendering.
mxXmlRequest.prototype.setRequestHeaders = function(request,
params)
Sets the headers for the given request and parameters.
mxWindow.prototype.setResizable = function(resizable)
Sets if the window should be resizable.
mxGraph.prototype.setResizeContainer = function(value)
Sets resizeContainer.
mxSwimlaneManager.prototype.setResizeEnabled = function(value)
Sets resizeEnabled.
mxGraphModel.prototype.setRoot = function(root)
Sets the root of the model using mxRootChange and adds the change to the current transaction.
mxGraphView.prototype.setScale = function(value)
Sets the scale and fires a scale event before calling revalidate followed by mxGraph.sizeDidChange.
mxWindow.prototype.setScrollable = function(scrollable)
Sets if the window contents should be scrollable.
mxGraphHandler.prototype.setSelectEnabled = function(value)
Sets selectEnabled.
mxGraph.prototype.setSelectionCell = function(cell)
Sets the selection cell.
mxGraph.prototype.setSelectionCells = function(cells)
Sets the selection cell.
mxGraph.prototype.setSelectionModel = function(selectionModel)
Sets the mxSelectionModel that contains the selection.
mxAbstractCanvas2D.prototype.setShadow = function(enabled)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadow = function(value)
Enables or disables shadows.
mxAbstractCanvas2D.prototype.setShadowAlpha = function(value)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowAlpha = function(value)
Sets the current shadows alpha.
mxAbstractCanvas2D.prototype.setShadowColor = function(value)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowColor = function(value)
Sets the current shadow color.
mxAbstractCanvas2D.prototype.setShadowOffset = function(dx,
dy)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowOffset = function(dx,
dy)
Sets the current shadow offset.
mxSpaceManager.prototype.setShiftDownwards = function(value)
Enables or disables event handling.
mxSpaceManager.prototype.setShiftRightwards = function(value)
Enables or disables event handling.
mxGraphSelectionModel.prototype.setSingleSelection = function(singleSelection)
Sets the singleSelection flag.
mxWindow.prototype.setSize = function(width,
height)
Sets the size of the window.
mxGraph.prototype.setSplitEnabled = function(value)
Specifies if the graph should allow dropping of cells onto or into other cells.
mxGraphView.prototype.setStates = function(value)
Sets states.
mxGuide.prototype.setStates = function(states)
Sets the mxCellStates that should be used for alignment.
mxEditor.prototype.setStatus = function (message)
Display the specified message in the status bar.
mxEditor.prototype.setStatusContainer = function (container)
Creates the status using the specified container.
mxAbstractCanvas2D.prototype.setStrokeColor = function(value)
Sets the current stroke color.
mxXmlCanvas2D.prototype.setStrokeColor = function(value)
Sets the current stroke color.
mxAbstractCanvas2D.prototype.setStrokeWidth = function(value)
Sets the current stroke width.
mxXmlCanvas2D.prototype.setStrokeWidth = function(value)
Sets the current stroke width.
mxCell.prototype.setStyle = function(style)
Sets the string to be used as the style.
mxGraphModel.prototype.setStyle = function(cell,
style)
Sets the style of the given mxCell using mxStyleChange and adds the change to the current transaction.
setStyle: function(style,
key,
value)
Adds or removes the given key, value pair to the style and returns the new style.
setStyleFlag: function(style,
key,
flag,
value)
Sets or removes the given key from the specified style and returns the new style.
mxGraph.prototype.setStylesheet = function(stylesheet)
Sets the mxStylesheet that defines the style.
mxGraph.prototype.setSwimlaneNesting = function(value)
Specifies if swimlanes can be nested by drag and drop.
mxGraph.prototype.setSwimlaneSelectionEnabled = function(value)
Specifies if swimlanes should be selected if the mouse is released over their content area.
mxCell.prototype.setTerminal = function(terminal,
isSource)
Sets the source or target terminal and returns the new terminal.
mxGraphModel.prototype.setTerminal = function(edge,
terminal,
isSource)
Sets the source or target terminal of the given mxCell using mxTerminalChange and adds the change to the current transaction.
mxGeometry.prototype.setTerminalPoint = function(point,
isSource)
Sets the sourcePoint or targetPoint to the given mxPoint and returns the new point.
mxGraphModel.prototype.setTerminals = function(edge,
source,
target)
Sets the source and target mxCell of the given mxCell in a single transaction using setTerminal for each end of the edge.
setTextContent: function(node,
text)
Sets the text content of the specified node.
mxWindow.prototype.setTitle = function(title)
Sets the window title to the given string.
mxEditor.prototype.setTitleContainer = function (container)
Creates a listener to update the inner HTML of the specified DOM node with the value of getTitle.
mxGraph.prototype.setTolerance = function(value)
Sets tolerance.
mxEditor.prototype.setToolbarContainer = function (container)
Initializes the toolbar for the given container.
mxGraph.prototype.setTooltips = function (enabled)
Specifies if tooltips should be enabled.
mxGraphView.prototype.setTranslate = function(dx,
dy)
Sets the translation and fires a translate event before calling revalidate followed by mxGraph.sizeDidChange.
mxShape.prototype.setTransparentBackgroundImage = function(node)
Sets a transparent background CSS style to catch all events.
mxCell.prototype.setValue = function(value)
Sets the user object of the cell.
mxGraphModel.prototype.setValue = function(cell,
value)
Sets the user object of then given mxCell using mxValueChange and adds the change to the current transaction.
mxCell.prototype.setVertex = function(vertex)
Specifies if the cell is a vertex.
mxGraph.prototype.setVertexLabelsMovable = function(value)
Sets vertexLabelsMovable.
mxCoordinateAssignment.prototype.setVertexLocation = function(cell)
Fixes the position of the specified vertex.
mxGraphLayout.prototype.setVertexLocation = function(cell,
x,
y)
Sets the new position of the given cell taking into account the size of the bounding box if useBoundingBox is true.
mxCell.prototype.setVisible = function(visible)
Specifies if the cell is visible.
mxGraphModel.prototype.setVisible = function(cell,
visible)
Sets the visible state of the given mxCell using mxVisibleChange and adds the change to the current transaction.
setVisible: function(visible)
Shows or hides the console.
mxHandle.prototype.setVisible = function(visible)
Shows or hides this handle.
mxWindow.prototype.setVisible = function(visible)
Shows or hides the window depending on the given flag.
mxCellState.prototype.setVisibleTerminalState = function (terminalState,
source)
Sets the visible source or target terminal state.
mxGraphAbstractHierarchyCell.prototype.setX = function(layer,
value)
Set the value of x for the specified layer
mxGraphAbstractHierarchyCell.prototype.setY = function(layer,
value)
Set the value of y for the specified layer
mxOutline.prototype.setZoomEnabled = function(value)
Enables or disables the zoom handling by showing or hiding the respective handle.
mxSpaceManager.prototype.shiftCell = function(cell,
dx,
dy,
Ox0,
y0,
right,
bottom,
fx,
fy,
extendParent)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxGraphHandler.prototype.shouldRemoveCellsFromParent = function(parent,
cells,
evt)
Returns true if the given cells should be removed from the parent for the specified mousereleased event.
mxCellStatePreview.prototype.show = function(visitor)
show: function()
Shows the console.
mxMorphing.prototype.show = function(move)
Shows the changes in the given mxCellStatePreview.
mxTooltipHandler.prototype.show = function(tip,
x,
y)
Shows the tooltip for the specified cell and optional index at the specified location (with a vertical offset of 10 pixels).
show: function(graph,
doc,
x0,
y0,
w,
h)
Copies the styles and the markup from the graph’s container into the given document and removes all cursor styles.
mxWindow.prototype.show = function()
Shows the window.
mxEditor.prototype.showHelp = function (tasks)
Shows the help window.
mxPopupMenu.prototype.showMenu = function()
Shows the menu.
mxEditor.prototype.showOutline = function ()
Shows the outline window.
mxEditor.prototype.showProperties = function (cell)
Creates and shows the properties dialog for the given cell.
mxPopupMenu.prototype.showSubmenu = function(parent,
row)
Shows the submenu inside the given parent row.
mxEditor.prototype.showTasks = function ()
Shows the tasks window.
SideToSide: function (state,
source,
target,
points,
result)
Implements a vertical elbow edge.
mxXmlRequest.prototype.simulate = function(doc,
target)
Creates and posts a request to the given target URL using a dynamically created form inside the given document.
mxGraph.prototype.sizeDidChange = function()
Called when the size of the graph has changed.
mxGraph.prototype.snap = function(value)
Snaps the given numeric value to the grid if gridEnabled is true.
mxGraphHandler.prototype.snap = function(vector)
Snaps the given vector to the grid and returns the given mxPoint instance.
mxHandle.prototype.snapPoint = function(pt,
ignore)
Snaps the given point to the grid if ignore is false.
sortCells: function(cells,
ascending)
Sorts the given cells according to the order in the cell hierarchy.
mxCompactTreeLayout.prototype.sortOutgoingEdges = function(source,
edges)
Called if sortEdges is true to sort the array of outgoing edges in place.
Reference to the source mxGraph.
mxGraph.prototype.splitEdge = function(edge,
cells,
newEdge,
dx,
dy)
Splits the given edge by adding the newEdge between the previous source and the given cell and reconnecting the source of the given edge to the given cell.
mxConnectionHandler.prototype.start = function(state,
x,
y,
edgeState)
Starts a new connection for the given state and coordinates.
mxEdgeHandler.prototype.start = function(x,
y,
index)
Starts the handling of the mouse gesture.
mxGraphHandler.prototype.start = function(cell,
x,
y)
Starts the handling of the mouse gesture.
mxPanningHandler.prototype.start = function(me)
Starts panning at the given event.
mxRubberband.prototype.start = function(x,
y)
Sets the start point for the rubberband selection.
mxVertexHandler.prototype.start = function(x,
y,
index)
Starts the handling of the mouse gesture.
mxAnimation.prototype.startAnimation = function()
Starts the animation by repeatedly invoking updateAnimation.
mxDragSource.prototype.startDrag = function(evt)
Creates the dragElement using createDragElement.
mxCellEditor.prototype.startEditing = function(cell,
trigger)
Starts the editor for the given cell.
mxGraph.prototype.startEditing = function(evt)
Calls startEditingAtCell using the given cell or the first selection cell.
mxGraph.prototype.startEditingAtCell = function(cell,
evt)
Fires a startEditing event and invokes mxCellEditor.startEditing on editor.
mxGraphView.prototype.stateValidated = function(state)
Invoked when a state has been processed in validatePoints.
mxAnimation.prototype.stopAnimation = function()
Stops the animation by deleting the timer and fires an mxEvent.DONE.
mxDragSource.prototype.stopDrag = function()
Invokes removeDragElement.
mxCellEditor.prototype.stopEditing = function(cancel)
Stops the editor and applies the value if cancel is false.
mxGraph.prototype.stopEditing = function(cancel)
Stops the current editing and fires a editingStopped event.
mxMorphing.prototype.stopRecursion = function(state,
delta)
Returns true if the animation should not recursively find more deltas for children if the given parent state has been animated.
mxSvgCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxVmlCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxXmlCanvas2D.prototype.stroke = function()
Paints the outline of the current drawing buffer.
mxGraphModel.prototype.styleForCellChanged = function(cell,
style)
Inner callback to update the style of the given mxCell using mxCell.setStyle and return the previous style.
Maps from names to cell styles.
submit: function(url,
params,
doc,
target)
Submits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.
mxGeometry.prototype.swap = function()
Swaps the x, y, width and height with the values stored in alternateBounds and puts the previous values into alternateBounds as a rectangle.
mxGraph.prototype.swapBounds = function(cell,
willCollapse)
Swaps the alternate and the actual bounds in the geometry of the given cell invoking updateAlternateBounds before carrying out the swap.
mxEditor.prototype.swapStyles = function (first,
second)
Swaps the styles for the given names in the graph’s stylesheet and refreshes the graph.
mxSwimlaneManager.prototype.swimlaneAdded = function(swimlane)
Updates the size of the given swimlane to match that of any existing siblings swimlanes.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions17.html b/docs/js-api/index/Functions17.html index e2524bdf6..4b197819d 100644 --- a/docs/js-api/index/Functions17.html +++ b/docs/js-api/index/Functions17.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 tapAndHold, mxGraph
 terminalForCellChanged, mxGraphModel
 text
 toggleCells, mxGraph
 toggleCellStyle, mxGraph
 toggleCellStyleFlags, mxGraph
 toggleCellStyles, mxGraph
 TopToBottom, mxEdgeStyle
 toRadians, mxUtils
 toString
 transformControlPoint, mxGraphView
 translate
 translateCell, mxGraph
 translateState, mxCellStatePreview
 transpose, mxMedianHybridCrossingReduction
 traverse
 treeLayout, mxEditor
 TrianglePerimeter, mxPerimeter
 trim
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 tapAndHold, mxGraph
 terminalForCellChanged, mxGraphModel
 text
 toDegree, mxUtils
 toggleCells, mxGraph
 toggleCellStyle, mxGraph
 toggleCellStyleFlags, mxGraph
 toggleCellStyles, mxGraph
 TopToBottom, mxEdgeStyle
 toRadians, mxUtils
 toString
 transformControlPoint, mxGraphView
 translate
 translateCell, mxGraph
 translateState, mxCellStatePreview
 transpose, mxMedianHybridCrossingReduction
 traverse
 treeLayout, mxEditor
 TrianglePerimeter, mxPerimeter
 trim
-
mxGraph.prototype.tapAndHold = function(me)
Handles the mxMouseEvent by highlighting the mxCellState.
mxGraphModel.prototype.terminalForCellChanged = function(edge,
terminal,
isSource)
Inner helper function to update the terminal of the edge using mxCell.insertEdge and return the previous terminal.
mxSvgCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxVmlCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxXmlCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxGraph.prototype.toggleCells = function(show,
cells,
includeEdges)
Sets the visible state of the specified cells and all connected edges if includeEdges is true.
mxGraph.prototype.toggleCellStyle = function(key,
defaultValue,
cell)
Toggles the boolean value for the given key in the style of the given cell and returns the new value as 0 or 1.
mxGraph.prototype.toggleCellStyleFlags = function(key,
flag,
cells)
Toggles the given bit for the given key in the styles of the specified cells.
mxGraph.prototype.toggleCellStyles = function(key,
defaultValue,
cells)
Toggles the boolean value for the given key in the style of the given cells and returns the new value as 0 or 1.
TopToBottom: function(state,
source,
target,
points,
result)
Implements a horizontal elbow edge.
toRadians: function(deg)
Converts the given degree to radians.
mxCellOverlay.prototype.toString = function()
Returns the textual representation of the overlay to be used as the tooltip.
toString: function(obj)
Returns a textual representation of the specified object.
mxGraphView.prototype.transformControlPoint = function(state,
pt)
Transforms the given control point to an absolute point.
mxAbstractCanvas2D.prototype.translate = function(dx,
dy)
Translates the current state.
mxGeometry.prototype.translate = function(dx,
dy)
Translates the geometry by the specified amount.
mxXmlCanvas2D.prototype.translate = function(dx,
dy)
Translates the output.
mxGraph.prototype.translateCell = function(cell,
dx,
dy)
Translates the geometry of the given cell and stores the new, translated geometry in the model as an atomic change.
mxCellStatePreview.prototype.translateState = function(state,
dx,
dy)
mxMedianHybridCrossingReduction.prototype.transpose = function(
   mainLoopIteration,
   model
)
Takes each possible adjacent cell pair on each rank and checks if swapping them around reduces the number of crossing
mxGraph.prototype.traverse = function(vertex,
directed,
func,
edge,
visited)
Traverses the (directed) graph invoking the given function for each visited vertex and edge.
mxGraphLayout.traverse = function(vertex,
directed,
func,
edge,
visited)
Traverses the (directed) graph invoking the given function for each visited vertex and edge.
mxEditor.prototype.treeLayout = function (cell,
horizontal)
Executes a vertical or horizontal compact tree layout using the specified cell as an argument.
TrianglePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a triangle perimeter.
mxUndoManager.prototype.trim = function()
Removes all pending steps after indexOfNextAdd from the history, invoking die on each edit.
trim: function(str,
chars)
Strips all whitespaces from both end of the string.
+
mxGraph.prototype.tapAndHold = function(me)
Handles the mxMouseEvent by highlighting the mxCellState.
mxGraphModel.prototype.terminalForCellChanged = function(edge,
terminal,
isSource)
Inner helper function to update the terminal of the edge using mxCell.insertEdge and return the previous terminal.
mxSvgCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxVmlCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxXmlCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
toDegree: function(rad)
Converts the given radians to degree.
mxGraph.prototype.toggleCells = function(show,
cells,
includeEdges)
Sets the visible state of the specified cells and all connected edges if includeEdges is true.
mxGraph.prototype.toggleCellStyle = function(key,
defaultValue,
cell)
Toggles the boolean value for the given key in the style of the given cell and returns the new value as 0 or 1.
mxGraph.prototype.toggleCellStyleFlags = function(key,
flag,
cells)
Toggles the given bit for the given key in the styles of the specified cells.
mxGraph.prototype.toggleCellStyles = function(key,
defaultValue,
cells)
Toggles the boolean value for the given key in the style of the given cells and returns the new value as 0 or 1.
TopToBottom: function(state,
source,
target,
points,
result)
Implements a horizontal elbow edge.
toRadians: function(deg)
Converts the given degree to radians.
mxCellOverlay.prototype.toString = function()
Returns the textual representation of the overlay to be used as the tooltip.
toString: function(obj)
Returns a textual representation of the specified object.
mxGraphView.prototype.transformControlPoint = function(state,
pt)
Transforms the given control point to an absolute point.
mxAbstractCanvas2D.prototype.translate = function(dx,
dy)
Translates the current state.
mxGeometry.prototype.translate = function(dx,
dy)
Translates the geometry by the specified amount.
mxXmlCanvas2D.prototype.translate = function(dx,
dy)
Translates the output.
mxGraph.prototype.translateCell = function(cell,
dx,
dy)
Translates the geometry of the given cell and stores the new, translated geometry in the model as an atomic change.
mxCellStatePreview.prototype.translateState = function(state,
dx,
dy)
mxMedianHybridCrossingReduction.prototype.transpose = function(
   mainLoopIteration,
   model
)
Takes each possible adjacent cell pair on each rank and checks if swapping them around reduces the number of crossing
mxGraph.prototype.traverse = function(vertex,
directed,
func,
edge,
visited)
Traverses the (directed) graph invoking the given function for each visited vertex and edge.
mxGraphLayout.traverse = function(vertex,
directed,
func,
edge,
visited)
Traverses the (directed) graph invoking the given function for each visited vertex and edge.
mxEditor.prototype.treeLayout = function (cell,
horizontal)
Executes a vertical or horizontal compact tree layout using the specified cell as an argument.
TrianglePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a triangle perimeter.
mxUndoManager.prototype.trim = function()
Removes all pending steps after indexOfNextAdd from the history, invoking die on each edit.
trim: function(str,
chars)
Strips all whitespaces from both end of the string.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions18.html b/docs/js-api/index/Functions18.html index 6edc5cd4f..abf3dd255 100644 --- a/docs/js-api/index/Functions18.html +++ b/docs/js-api/index/Functions18.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
U
 undo
 undoableEditHappened, mxUndoManager
 ungroupCells, mxGraph
 union, mxVertexHandler
 unmark, mxCellMarker
 update
 updateAlternateBounds, mxGraph
 updateAnimation
 updateBaseUrl, mxUrlConverter
 updateBoundingBox
 updateBoundsFromPoints, mxShape
 updateCachedBounds, mxCellState
 updateCellSize, mxGraph
 updateCellState, mxGraphView
 updateContainerStyle, mxGraphView
 updateCurrentState, mxConnectionHandler
 updateEdgeBounds, mxGraphView
 updateEdgeLabelOffset, mxGraphView
 updateEdgeParent, mxGraphModel
 updateEdgeParents, mxGraphModel
 updateEdgeState, mxGraphView
 updateFill, mxSvgCanvas2D
 updateFixedTerminalPoint, mxGraphView
 updateFixedTerminalPoints, mxGraphView
 updateFloatingTerminalPoint, mxGraphView
 updateFloatingTerminalPoints, mxGraphView
 updateFont
 updateGroupBounds
 updateHint
 updateHtmlCanvasSize, mxGraphView
 updateHtmlFilter, mxText
 updateHtmlFilters, mxShape
 updateHtmlTransform, mxText
 updateIcons, mxConnectionHandler
 updateMinBounds, mxVertexHandler
 updateMouseEvent, mxGraph
 updatePageBreaks, mxGraph
 updateParentHighlight, mxVertexHandler
 updatePoints, mxGraphView
 updatePreviewShape, mxGraphHandler
 updatePreviewState
 updateSize, mxText
 updateStroke, mxSvgCanvas2D
 updateStrokeAttributes, mxSvgCanvas2D
 updateTransform, mxShape
 updateValue, mxText
 updateVertexLabelOffset, mxGraphView
 updateVertexState, mxGraphView
 updateVmlContainer
 updatingDocumentResource, mxGraphView
 useGuidesForEvent, mxGraphHandler
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
U
 undo
 undoableEditHappened, mxUndoManager
 ungroupCells, mxGraph
 union, mxVertexHandler
 unmark, mxCellMarker
 update
 updateAlternateBounds, mxGraph
 updateAnimation
 updateBaseUrl, mxUrlConverter
 updateBoundingBox
 updateBoundsFromPoints, mxShape
 updateCachedBounds, mxCellState
 updateCellSize, mxGraph
 updateCellState, mxGraphView
 updateContainerStyle, mxGraphView
 updateCurrentState, mxConnectionHandler
 updateEdgeBounds, mxGraphView
 updateEdgeLabelOffset, mxGraphView
 updateEdgeParent, mxGraphModel
 updateEdgeParents, mxGraphModel
 updateEdgeState, mxGraphView
 updateFill, mxSvgCanvas2D
 updateFixedTerminalPoint, mxGraphView
 updateFixedTerminalPoints, mxGraphView
 updateFloatingTerminalPoint, mxGraphView
 updateFloatingTerminalPoints, mxGraphView
 updateFont
 updateGroupBounds
 updateHint
 updateHtmlCanvasSize, mxGraphView
 updateHtmlFilter, mxText
 updateHtmlFilters, mxShape
 updateHtmlTransform, mxText
 updateIcons, mxConnectionHandler
 updateMinBounds, mxVertexHandler
 updateMouseEvent, mxGraph
 updatePageBreaks, mxGraph
 updateParentHighlight, mxVertexHandler
 updatePoints, mxGraphView
 updatePreviewShape, mxGraphHandler
 updatePreviewState
 updateSize, mxText
 updateStroke, mxSvgCanvas2D
 updateStrokeAttributes, mxSvgCanvas2D
 updateTransform, mxShape
 updateValue, mxText
 updateVertexLabelOffset, mxGraphView
 updateVertexState, mxGraphView
 updateVmlContainer
 updatingDocumentResource, mxGraphView
 useGuidesForEvent, mxGraphHandler
-
mxEditor.prototype.undo = function ()
Undo the last change in graph.
mxUndoableEdit.prototype.undo = function()
Undoes all changes in this edit.
mxUndoManager.prototype.undo = function()
Undoes the last change.
mxUndoManager.prototype.undoableEditHappened = function(undoableEdit)
Method to be called to add new undoable edits to the history.
mxGraph.prototype.ungroupCells = function(cells)
Ungroups the given cells by moving the children the children to their parents parent and removing the empty groups.
mxVertexHandler.prototype.union = function(bounds,
dx,
dy,
index,
gridEnabled,
scale,
tr,
constrained)
Returns the union of the given bounds and location for the specified handle index.
mxCellMarker.prototype.unmark = function()
Hides the marker and fires a mark event.
mxConstraintHandler.prototype.update = function(me,
source)
Updates the state of this handler based on the given mxMouseEvent.
mxOutline.prototype.update = function(revalidate)
Updates the outline.
mxRubberband.prototype.update = function(x,
y)
Sets currentX and currentY and calls repaint.
mxGraph.prototype.updateAlternateBounds = function(cell,
geo,
willCollapse)
Updates or sets the alternate bounds in the given geometry for the given cell depending on whether the cell is going to be collapsed.
mxAnimation.prototype.updateAnimation = function()
Hook for subclassers to implement the animation.
mxMorphing.prototype.updateAnimation = function()
Animation step.
mxUrlConverter.prototype.updateBaseUrl = function()
Private helper function to update the base URL.
mxShape.prototype.updateBoundingBox = function()
Updates the boundingBox for this shape using createBoundingBox and augmentBoundingBox and stores the result in boundingBox.
mxText.prototype.updateBoundingBox = function()
Updates the boundingBox for this shape using the given node and position.
mxShape.prototype.updateBoundsFromPoints = function()
Updates the bounds based on the points.
mxCellState.prototype.updateCachedBounds = function()
Updates the cellBounds and paintBounds.
mxGraph.prototype.updateCellSize = function(cell,
ignoreChildren)
Updates the size of the given cell in the model using cellSizeUpdated.
mxGraphView.prototype.updateCellState = function(state)
Updates the given mxCellState.
mxGraphView.prototype.updateContainerStyle = function(container)
Updates the style of the container after installing the SVG DOM elements.
mxConnectionHandler.prototype.updateCurrentState = function(me,
point)
Updates the current state for a given mouse move event by using the marker.
mxGraphView.prototype.updateEdgeBounds = function(state)
Updates the given state using the bounding box of t he absolute points.
mxGraphView.prototype.updateEdgeLabelOffset = function(state)
Updates mxCellState.absoluteOffset for the given state.
mxGraphModel.prototype.updateEdgeParent = function(edge,
root)
Inner callback to update the parent of the specified mxCell to the nearest-common-ancestor of its two terminals.
mxGraphModel.prototype.updateEdgeParents = function(cell,
root)
Updates the parent for all edges that are connected to cell or one of its descendants using updateEdgeParent.
mxGraphView.prototype.updateEdgeState = function(state,
geo)
Validates the given cell state.
mxSvgCanvas2D.prototype.updateFill = function()
Transfers the stroke attributes from state to node.
mxGraphView.prototype.updateFixedTerminalPoint = function(edge,
terminal,
source,
constraint)
Sets the fixed source or target terminal point on the given edge.
mxGraphView.prototype.updateFixedTerminalPoints = function(edge,
source,
target)
Sets the initial absolute terminal points in the given state before the edge style is computed.
mxGraphView.prototype.updateFloatingTerminalPoint = function(edge,
start,
end,
source)
Updates the absolute terminal point in the given state for the given start and end state, where start is the source if source is true.
mxGraphView.prototype.updateFloatingTerminalPoints = function(state,
source,
target)
Updates the terminal points in the given state after the edge style was computed for the edge.
mxSvgCanvas2D.prototype.updateFont = function(node)
Updates the text properties for the given node.
mxText.prototype.updateFont = function(node)
Updates the HTML node(s) to reflect the latest bounds and scale.
mxGraph.prototype.updateGroupBounds = function(cells,
border,
moveGroup,
topBorder,
rightBorder,
bottomBorder,
leftBorder)
Updates the bounds of the given groups to include all children and returns the passed-in cells.
mxSwimlaneLayout.prototype.updateGroupBounds = function()
Updates the bounds of the given array of groups so that it includes all child vertices.
mxEdgeHandler.prototype.updateHint = function(me,
point)
Hook for subclassers do show details while the handler is active.
mxGraphHandler.prototype.updateHint = function(me)
Hook for subclassers do show details while the handler is active.
mxVertexHandler.prototype.updateHint = function(me)
Hook for subclassers do show details while the handler is active.
mxGraphView.prototype.updateHtmlCanvasSize = function(width,
height)
Updates the size of the HTML canvas.
mxText.prototype.updateHtmlFilter = function()
Rotated text rendering quality is bad for IE9 quirks/IE8 standards
mxShape.prototype.updateHtmlFilters = function(node)
Allow optimization by replacing VML with HTML.
mxText.prototype.updateHtmlTransform = function()
Returns the spacing as an mxPoint.
mxConnectionHandler.prototype.updateIcons = function(state,
icons,
me)
Hook to update the icon position(s) based on a mouseOver event.
mxVertexHandler.prototype.updateMinBounds = function()
Initializes the shapes required for this vertex handler.
mxGraph.prototype.updateMouseEvent = function(me)
Sets the graphX and graphY properties if the given mxMouseEvent if required and returned the event.
mxGraph.prototype.updatePageBreaks = function(visible,
width,
height)
Invokes from sizeDidChange to redraw the page breaks.
mxVertexHandler.prototype.updateParentHighlight = function()
Updates the highlight of the parent if parentHighlightEnabled is true.
mxGraphView.prototype.updatePoints = function(edge,
points,
source,
target)
Updates the absolute points in the given state using the specified array of mxPoints as the relative points.
mxGraphHandler.prototype.updatePreviewShape = function()
Updates the bounds of the preview shape.
mxEdgeSegmentHandler.prototype.updatePreviewState = function(edge,
point,
terminalState,
me)
Overridden to perform optimization of the edge style result.
mxEdgeHandler.prototype.updatePreviewState = function(edge,
point,
terminalState,
me)
Updates the given preview state taking into account the state of the constraint handler.
mxText.prototype.updateSize = function(node,
enableWrap)
Updates the HTML node(s) to reflect the latest bounds and scale.
mxSvgCanvas2D.prototype.updateStroke = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.updateStrokeAttributes = function()
Transfers the stroke attributes from state to node.
mxShape.prototype.updateTransform = function(c,
x,
y,
w,
h)
Sets the scale and rotation on the given canvas.
mxText.prototype.updateValue = function()
Updates the HTML node(s) to reflect the latest bounds and scale.
mxGraphView.prototype.updateVertexLabelOffset = function(state)
Updates the absoluteOffset of the given vertex cell state.
mxGraphView.prototype.updateVertexState = function(state,
geo)
Validates the given cell state.
mxShape.prototype.updateVmlContainer = function()
Updates the bounds of the VML container.
mxText.prototype.updateVmlContainer = function()
Sets the width and height of the container to 1px.
Specifies the resource key for the status message while the document is being updated.
mxGraphHandler.prototype.useGuidesForEvent = function(me)
Returns true if the guides should be used for the given mxMouseEvent.
+
mxEditor.prototype.undo = function ()
Undo the last change in graph.
mxUndoableEdit.prototype.undo = function()
Undoes all changes in this edit.
mxUndoManager.prototype.undo = function()
Undoes the last change.
mxUndoManager.prototype.undoableEditHappened = function(undoableEdit)
Method to be called to add new undoable edits to the history.
mxGraph.prototype.ungroupCells = function(cells)
Ungroups the given cells by moving the children the children to their parents parent and removing the empty groups.
mxVertexHandler.prototype.union = function(bounds,
dx,
dy,
index,
gridEnabled,
scale,
tr,
constrained)
Returns the union of the given bounds and location for the specified handle index.
mxCellMarker.prototype.unmark = function()
Hides the marker and fires a mark event.
mxConstraintHandler.prototype.update = function(me,
source)
Updates the state of this handler based on the given mxMouseEvent.
mxOutline.prototype.update = function(revalidate)
Updates the outline.
mxRubberband.prototype.update = function(x,
y)
Sets currentX and currentY and calls repaint.
mxGraph.prototype.updateAlternateBounds = function(cell,
geo,
willCollapse)
Updates or sets the alternate bounds in the given geometry for the given cell depending on whether the cell is going to be collapsed.
mxAnimation.prototype.updateAnimation = function()
Hook for subclassers to implement the animation.
mxMorphing.prototype.updateAnimation = function()
Animation step.
mxUrlConverter.prototype.updateBaseUrl = function()
Private helper function to update the base URL.
mxShape.prototype.updateBoundingBox = function()
Updates the boundingBox for this shape using createBoundingBox and augmentBoundingBox and stores the result in boundingBox.
mxText.prototype.updateBoundingBox = function()
Updates the boundingBox for this shape using the given node and position.
mxShape.prototype.updateBoundsFromPoints = function()
Updates the bounds based on the points.
mxCellState.prototype.updateCachedBounds = function()
Updates the cellBounds and paintBounds.
mxGraph.prototype.updateCellSize = function(cell,
ignoreChildren)
Updates the size of the given cell in the model using cellSizeUpdated.
mxGraphView.prototype.updateCellState = function(state)
Updates the given mxCellState.
mxGraphView.prototype.updateContainerStyle = function(container)
Updates the style of the container after installing the SVG DOM elements.
mxConnectionHandler.prototype.updateCurrentState = function(me,
point)
Updates the current state for a given mouse move event by using the marker.
mxGraphView.prototype.updateEdgeBounds = function(state)
Updates the given state using the bounding box of t he absolute points.
mxGraphView.prototype.updateEdgeLabelOffset = function(state)
Updates mxCellState.absoluteOffset for the given state.
mxGraphModel.prototype.updateEdgeParent = function(edge,
root)
Inner callback to update the parent of the specified mxCell to the nearest-common-ancestor of its two terminals.
mxGraphModel.prototype.updateEdgeParents = function(cell,
root)
Updates the parent for all edges that are connected to cell or one of its descendants using updateEdgeParent.
mxGraphView.prototype.updateEdgeState = function(state,
geo)
Validates the given cell state.
mxSvgCanvas2D.prototype.updateFill = function()
Transfers the stroke attributes from state to node.
mxGraphView.prototype.updateFixedTerminalPoint = function(edge,
terminal,
source,
constraint)
Sets the fixed source or target terminal point on the given edge.
mxGraphView.prototype.updateFixedTerminalPoints = function(edge,
source,
target)
Sets the initial absolute terminal points in the given state before the edge style is computed.
mxGraphView.prototype.updateFloatingTerminalPoint = function(edge,
start,
end,
source)
Updates the absolute terminal point in the given state for the given start and end state, where start is the source if source is true.
mxGraphView.prototype.updateFloatingTerminalPoints = function(state,
source,
target)
Updates the terminal points in the given state after the edge style was computed for the edge.
mxSvgCanvas2D.prototype.updateFont = function(node)
Updates the text properties for the given node.
mxText.prototype.updateFont = function(node)
Updates the HTML node(s) to reflect the latest bounds and scale.
mxGraph.prototype.updateGroupBounds = function(cells,
border,
moveGroup,
topBorder,
rightBorder,
bottomBorder,
leftBorder)
Updates the bounds of the given groups to include all children and returns the passed-in cells.
mxSwimlaneLayout.prototype.updateGroupBounds = function()
Updates the bounds of the given array of groups so that it includes all child vertices.
mxEdgeHandler.prototype.updateHint = function(me,
point)
Hook for subclassers do show details while the handler is active.
mxGraphHandler.prototype.updateHint = function(me)
Hook for subclassers do show details while the handler is active.
mxVertexHandler.prototype.updateHint = function(me)
Hook for subclassers do show details while the handler is active.
mxGraphView.prototype.updateHtmlCanvasSize = function(width,
height)
Updates the size of the HTML canvas.
mxText.prototype.updateHtmlFilter = function()
Rotated text rendering quality is bad for IE9 quirks/IE8 standards
mxShape.prototype.updateHtmlFilters = function(node)
Allow optimization by replacing VML with HTML.
mxText.prototype.updateHtmlTransform = function()
Returns the spacing as an mxPoint.
mxConnectionHandler.prototype.updateIcons = function(state,
icons,
me)
Hook to update the icon position(s) based on a mouseOver event.
mxVertexHandler.prototype.updateMinBounds = function()
Initializes the shapes required for this vertex handler.
mxGraph.prototype.updateMouseEvent = function(me)
Sets the graphX and graphY properties if the given mxMouseEvent if required and returned the event.
mxGraph.prototype.updatePageBreaks = function(visible,
width,
height)
Invokes from sizeDidChange to redraw the page breaks.
mxVertexHandler.prototype.updateParentHighlight = function()
Updates the highlight of the parent if parentHighlightEnabled is true.
mxGraphView.prototype.updatePoints = function(edge,
points,
source,
target)
Updates the absolute points in the given state using the specified array of mxPoints as the relative points.
mxGraphHandler.prototype.updatePreviewShape = function()
Updates the bounds of the preview shape.
mxEdgeSegmentHandler.prototype.updatePreviewState = function(edge,
point,
terminalState,
me)
Overridden to perform optimization of the edge style result.
mxEdgeHandler.prototype.updatePreviewState = function(edge,
point,
terminalState,
me)
Updates the given preview state taking into account the state of the constraint handler.
mxText.prototype.updateSize = function(node,
enableWrap)
Updates the HTML node(s) to reflect the latest bounds and scale.
mxSvgCanvas2D.prototype.updateStroke = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.updateStrokeAttributes = function()
Transfers the stroke attributes from state to node.
mxShape.prototype.updateTransform = function(c,
x,
y,
w,
h)
Sets the scale and rotation on the given canvas.
mxText.prototype.updateValue = function()
Updates the HTML node(s) to reflect the latest bounds and scale.
mxGraphView.prototype.updateVertexLabelOffset = function(state)
Updates the absoluteOffset of the given vertex cell state.
mxGraphView.prototype.updateVertexState = function(state,
geo)
Validates the given cell state.
mxShape.prototype.updateVmlContainer = function()
Updates the bounds of the VML container.
mxText.prototype.updateVmlContainer = function()
Sets the width and height of the container to 1px.
Specifies the resource key for the status message while the document is being updated.
mxGraphHandler.prototype.useGuidesForEvent = function(me)
Returns true if the guides should be used for the given mxMouseEvent.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions19.html b/docs/js-api/index/Functions19.html index 4cc9ec5a2..2094e3880 100644 --- a/docs/js-api/index/Functions19.html +++ b/docs/js-api/index/Functions19.html @@ -11,17 +11,17 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
V
 validate, mxGraphView
 validateBackground, mxGraphView
 validateBackgroundImage, mxGraphView
 validateBackgroundPage, mxGraphView
 validateCell
 validateCellState, mxGraphView
 validateConnection
 validateEdge, mxGraph
 validateGraph, mxGraph
 validationAlert, mxGraph
 valueChanged, mxCell
 valueForCellChanged, mxGraphModel
 verticalLayout, mxCompactTreeLayout
 visibleStateForCellChanged, mxGraphModel
 visit
W
 warn, mxLog
 WeightedCellSorter, WeightedCellSorter
 weightedMedian, mxMedianHybridCrossingReduction
 write
 writeAttribute, mxObjectCodec
 writeComplexAttribute, mxObjectCodec
 writeDefaults, mxXmlCanvas2D
 writeGraphModel, mxEditor
 writeHead, mxPrintPreview
 writeln
 writePrimitiveAttribute, mxObjectCodec
Z
 zoom, mxGraph
 zoomActual, mxGraph
 zoomIn, mxGraph
 zoomOut, mxGraph
 zoomTo, mxGraph
 zoomToRect, mxGraph
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
V
 validate, mxGraphView
 validateBackground, mxGraphView
 validateBackgroundImage, mxGraphView
 validateBackgroundPage, mxGraphView
 validateCell
 validateCellState, mxGraphView
 validateConnection
 validateEdge, mxGraph
 validateGraph, mxGraph
 validationAlert, mxGraph
 valueChanged, mxCell
 valueForCellChanged, mxGraphModel
 verticalLayout, mxCompactTreeLayout
 visibleStateForCellChanged, mxGraphModel
 visit
W
 warn, mxLog
 WeightedCellSorter, WeightedCellSorter
 weightedMedian, mxMedianHybridCrossingReduction
 write
 writeAttribute, mxObjectCodec
 writeComplexAttribute, mxObjectCodec
 writeDefaults, mxXmlCanvas2D
 writeGraphModel, mxEditor
 writeHead, mxPrintPreview
 writeln
 writePrimitiveAttribute, mxObjectCodec
Z
 zoom, mxGraph
 zoomActual, mxGraph
 zoomIn, mxGraph
 zoomOut, mxGraph
 zoomTo, mxGraph
 zoomToRect, mxGraph
-
mxGraphView.prototype.validate = function(cell)
Calls validateCell and validateCellState and updates the graphBounds using getBoundingBox.
mxGraphView.prototype.validateBackground = function()
Calls validateBackgroundImage and validateBackgroundPage.
mxGraphView.prototype.validateBackgroundImage = function()
Validates the background image.
mxGraphView.prototype.validateBackgroundPage = function()
Validates the background page.
mxGraph.prototype.validateCell = function(cell,
context)
Hook method for subclassers to return an error message for the given cell and validation context.
mxGraphView.prototype.validateCell = function(cell,
visible)
Recursively creates the cell state for the given cell if visible is true and the given cell is visible.
mxGraphView.prototype.validateCellState = function(cell,
recurse)
Validates and repaints the mxCellState for the given mxCell.
mxConnectionHandler.prototype.validateConnection = function(source,
target)
Returns the error message or an empty string if the connection for the given source target pair is not valid.
mxEdgeHandler.prototype.validateConnection = function(source,
target)
Returns the error message or an empty string if the connection for the given source, target pair is not valid.
mxGraph.prototype.validateEdge = function(edge,
source,
target)
Hook method for subclassers to return an error message for the given edge and terminals.
mxGraph.prototype.validateGraph = function(cell,
context)
Validates the graph by validating each descendant of the given cell or the root of the model.
mxGraph.prototype.validationAlert = function(message)
Displays the given validation error in a dialog.
mxCell.prototype.valueChanged = function(newValue)
Changes the user object after an in-place edit and returns the previous value.
mxGraphModel.prototype.valueForCellChanged = function(cell,
value)
Inner callback to update the user object of the given mxCell using mxCell.valueChanged and return the previous value, that is, the return value of mxCell.valueChanged.
mxCompactTreeLayout.prototype.verticalLayout = function(node,
parent,
x0,
y0,
bounds)
mxGraphModel.prototype.visibleStateForCellChanged = function(cell,
visible)
Inner callback to update the visible state of the given mxCell using mxCell.setCollapsed and return the previous visible state.
mxDictionary.prototype.visit = function(visitor)
Visits all entries in the dictionary using the given function with the following signature: function(key, value) where key is a string and value is an object.
mxGraphHierarchyModel.prototype.visit = function(visitor,
dfsRoots,
trackAncestors,
seenNodes)
A depth first search through the internal heirarchy model.
mxSwimlaneModel.prototype.visit = function(visitor,
dfsRoots,
trackAncestors,
seenNodes)
A depth first search through the internal heirarchy model.
+
mxGraphView.prototype.validate = function(cell)
Calls validateCell and validateCellState and updates the graphBounds using getBoundingBox.
mxGraphView.prototype.validateBackground = function()
Calls validateBackgroundImage and validateBackgroundPage.
mxGraphView.prototype.validateBackgroundImage = function()
Validates the background image.
mxGraphView.prototype.validateBackgroundPage = function()
Validates the background page.
mxGraph.prototype.validateCell = function(cell,
context)
Hook method for subclassers to return an error message for the given cell and validation context.
mxGraphView.prototype.validateCell = function(cell,
visible)
Recursively creates the cell state for the given cell if visible is true and the given cell is visible.
mxGraphView.prototype.validateCellState = function(cell,
recurse)
Validates and repaints the mxCellState for the given mxCell.
mxConnectionHandler.prototype.validateConnection = function(source,
target)
Returns the error message or an empty string if the connection for the given source target pair is not valid.
mxEdgeHandler.prototype.validateConnection = function(source,
target)
Returns the error message or an empty string if the connection for the given source, target pair is not valid.
mxGraph.prototype.validateEdge = function(edge,
source,
target)
Hook method for subclassers to return an error message for the given edge and terminals.
mxGraph.prototype.validateGraph = function(cell,
context)
Validates the graph by validating each descendant of the given cell or the root of the model.
mxGraph.prototype.validationAlert = function(message)
Displays the given validation error in a dialog.
mxCell.prototype.valueChanged = function(newValue)
Changes the user object after an in-place edit and returns the previous value.
mxGraphModel.prototype.valueForCellChanged = function(cell,
value)
Inner callback to update the user object of the given mxCell using mxCell.valueChanged and return the previous value, that is, the return value of mxCell.valueChanged.
mxCompactTreeLayout.prototype.verticalLayout = function(node,
parent,
x0,
y0,
bounds)
mxGraphModel.prototype.visibleStateForCellChanged = function(cell,
visible)
Inner callback to update the visible state of the given mxCell using mxCell.setCollapsed and return the previous visible state.
mxDictionary.prototype.visit = function(visitor)
Visits all entries in the dictionary using the given function with the following signature: function(key, value) where key is a string and value is an object.
mxGraphHierarchyModel.prototype.visit = function(visitor,
dfsRoots,
trackAncestors,
seenNodes)
A depth first search through the internal heirarchy model.
mxSwimlaneModel.prototype.visit = function(visitor,
dfsRoots,
trackAncestors,
seenNodes)
A depth first search through the internal heirarchy model.
-
warn: function()
Adds all arguments to the console if WARN is enabled.
function WeightedCellSorter(cell,
weightedValue)
Constructs a new weighted cell sorted for the given cell and weight.
mxMedianHybridCrossingReduction.prototype.weightedMedian = function(iteration,
model)
Sweeps up or down the layout attempting to minimise the median placement of connected cells on adjacent ranks
write: function()
Adds the specified strings to the console.
write: function(parent,
text)
Creates a text node for the given string and appends it to the given parent.
mxObjectCodec.prototype.writeAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value into node using writePrimitiveAttribute or writeComplexAttribute depending on the type of the value.
mxObjectCodec.prototype.writeComplexAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value as a child node of the given node.
mxXmlCanvas2D.prototype.writeDefaults = function()
mxEditor.prototype.writeGraphModel = function (linefeed)
Hook to create the string representation of the diagram.
mxPrintPreview.prototype.writeHead = function(doc,
css)
Writes the HEAD section into the given document, without the opening and closing HEAD tags.
writeln: function()
Adds the specified strings to the console, appending a linefeed at the end of each string.
writeln: function(parent,
text)
Creates a text node for the given string and appends it to the given parent with an additional linefeed.
mxObjectCodec.prototype.writePrimitiveAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value as an attribute of the given node.
+
warn: function()
Adds all arguments to the console if WARN is enabled.
function WeightedCellSorter(cell,
weightedValue)
Constructs a new weighted cell sorted for the given cell and weight.
mxMedianHybridCrossingReduction.prototype.weightedMedian = function(iteration,
model)
Sweeps up or down the layout attempting to minimise the median placement of connected cells on adjacent ranks
write: function()
Adds the specified strings to the console.
write: function(parent,
text)
Creates a text node for the given string and appends it to the given parent.
mxObjectCodec.prototype.writeAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value into node using writePrimitiveAttribute or writeComplexAttribute depending on the type of the value.
mxObjectCodec.prototype.writeComplexAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value as a child node of the given node.
mxXmlCanvas2D.prototype.writeDefaults = function()
mxEditor.prototype.writeGraphModel = function (linefeed)
Hook to create the string representation of the diagram.
mxPrintPreview.prototype.writeHead = function(doc,
css)
Writes the HEAD section into the given document, without the opening and closing HEAD tags.
writeln: function()
Adds the specified strings to the console, appending a linefeed at the end of each string.
writeln: function(parent,
text)
Creates a text node for the given string and appends it to the given parent with an additional linefeed.
mxObjectCodec.prototype.writePrimitiveAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value as an attribute of the given node.
-
mxGraph.prototype.zoom = function(factor,
center)
Zooms the graph using the given factor.
mxGraph.prototype.zoomActual = function()
Resets the zoom and panning in the view.
mxGraph.prototype.zoomIn = function()
Zooms into the graph by zoomFactor.
mxGraph.prototype.zoomOut = function()
Zooms out of the graph by zoomFactor.
mxGraph.prototype.zoomTo = function(scale,
center)
Zooms the graph to the given scale with an optional boolean center argument, which is passd to zoom.
mxGraph.prototype.zoomToRect = function(rect)
Zooms the graph to the specified rectangle.
+
mxGraph.prototype.zoom = function(factor,
center)
Zooms the graph using the given factor.
mxGraph.prototype.zoomActual = function()
Resets the zoom and panning in the view.
mxGraph.prototype.zoomIn = function()
Zooms into the graph by zoomFactor.
mxGraph.prototype.zoomOut = function()
Zooms out of the graph by zoomFactor.
mxGraph.prototype.zoomTo = function(scale,
center)
Zooms the graph to the given scale with an optional boolean center argument, which is passd to zoom.
mxGraph.prototype.zoomToRect = function(rect)
Zooms the graph to the specified rectangle.
@@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions2.html b/docs/js-api/index/Functions2.html index 9183872ee..1722ed8ae 100644 --- a/docs/js-api/index/Functions2.html +++ b/docs/js-api/index/Functions2.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions3.html b/docs/js-api/index/Functions3.html index ed371f984..2e1c5c7c0 100644 --- a/docs/js-api/index/Functions3.html +++ b/docs/js-api/index/Functions3.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
C
 calcAttraction, mxFastOrganicLayout
 calcPositions, mxFastOrganicLayout
 calcRepulsion, mxFastOrganicLayout
 calcRowDims, mxRadialTreeLayout
 calculateCrossings, mxMedianHybridCrossingReduction
 calculatedWeightedValue, mxCoordinateAssignment
 calculateRankCrossing, mxMedianHybridCrossingReduction
 calculateWidestRank, mxCoordinateAssignment
 canExportCell, mxGraph
 canImportCell, mxGraph
 canRedo, mxUndoManager
 canUndo, mxUndoManager
 cascadeOpacity
 cellAdded
 cellCloned, mxGraphModel
 cellConnected, mxGraph
 cellLabelChanged, mxGraph
 cellRemoved
 cellResized
 cellsAdded
 cellsFolded, mxGraph
 cellSizeUpdated, mxGraph
 cellsMoved
 cellsOrdered, mxGraph
 cellsRemoved, mxGraph
 cellsResized
 cellsToggled, mxGraph
 center, mxGraph
 changePoints, mxEdgeHandler
 changeSelection, mxGraphSelectionModel
 changeTerminalPoint, mxEdgeHandler
 check, mxMultiplicity
 checkBounds
 checkLabelHandle, mxEdgeHandler
 checkNeighbors, mxMultiplicity
 checkTerminal, mxMultiplicity
 checkTolerance, mxVertexHandler
 checkType, mxMultiplicity
 circle, mxCircleLayout
 clear
 clearCellOverlays, mxGraph
 clearSelection
 click, mxGraph
 clone
 cloneCell, mxGraphModel
 cloneCellImpl, mxGraphModel
 cloneCells
 clonePreviewState, mxEdgeHandler
 cloneTemplate, mxObjectCodec
 cloneValue, mxCell
 close
 collapsedStateForCellChanged, mxGraphModel
 compare
 computeAspect, mxStencil
 configure, mxEditor
 configureCanvas
 configureShape, mxCellRenderer
 confirm, mxUtils
 connect
 connectCell, mxGraph
 constrainChild, mxGraph
 constrainChildCells, mxGraph
 consume
 consumeCycleAttribute, mxEditor
 consumeMouseEvent, mxGraph
 consumePanningTrigger, mxPanningHandler
 contains
 convert, mxUrlConverter
 convertAttributeFromXml, mxObjectCodec
 convertAttributeToXml, mxObjectCodec
 convertPoint
 convertValueToString, mxGraph
 convertWaypoint, mxConnectionHandler
 copy, mxClipboard
 copyStyle, mxVertexHandler
 create
 createBackgroundPageShape, mxGraphView
 createBends
 createBoundingBox, mxShape
 createBounds, mxVertexHandler
 createCanvas, mxShape
 createCellEditor, mxGraph
 createCellOverlays, mxCellRenderer
 createCellRenderer, mxGraph
 createClip, mxSvgCanvas2D
 createConditions, mxDefaultPopupMenu
 createConnectionHandler, mxGraph
 createControl, mxCellRenderer
 createCustomHandles, mxVertexHandler
 createDashPattern, mxSvgCanvas2D
 createDefaultEdgeStyle, mxStylesheet
 createDefaultVertexStyle, mxStylesheet
 createDiagramLayout, mxEditor
 createDiv, mxSvgCanvas2D
 createDragElement, mxDragSource
 createEdge
 createEdgeHandler, mxGraph
 createEdgeSegmentHandler, mxGraph
 createEdgeState, mxConnectionHandler
 createElbowEdgeHandler, mxGraph
 createElement
 createFill, mxVmlCanvas2D
 createGradientId, mxSvgCanvas2D
 createGraph
 createGraphHandler, mxGraph
 createGraphView, mxGraph
 createGroup, mxEditor
 createGroupCell, mxGraph
 createGuideShape, mxGuide
 createHandler, mxGraph
 createHandlers, mxGraph
 createHandleShape, mxEdgeHandler
 createHtml
 createHtmlPane, mxGraphView
 createIcons, mxConnectionHandler
 createId, mxGraphModel
 createImage, mxUtils
 createIndicatorShape, mxCellRenderer
 createInternalCells
 createLabel, mxCellRenderer
 createLabelHandleShape, mxEdgeHandler
 createLayoutManager, mxEditor
 createLine, mxCompactTreeLayout
 createMarker
 createMenu, mxDefaultPopupMenu
 createNode, mxCompactTreeLayout
 createPageSelector, mxPrintPreview
 createPanningHandler, mxGraph
 createPanningManager, mxGraph
 createParentHighlightShape, mxVertexHandler
 createPopupMenu, mxEditor
 createPopupMenuHandler, mxGraph
 createPreviewElement, mxDragSource
 createPreviewShape, mxGraphHandler
 createProperties, mxEditor
 createRect, mxVmlCanvas2D
 createRoot, mxGraphModel
 createSelectionCellsHandler, mxGraph
 createSelectionModel, mxGraph
 createSelectionShape
 createShadow
 createShadowFill, mxVmlCanvas2D
 createShadowStroke, mxVmlCanvas2D
 createShape
 createSizer
 createSizerShape, mxVertexHandler
 createState
 createStroke, mxVmlCanvas2D
 createStyle, mxSvgCanvas2D
 createStylesheet, mxGraph
 createSubmenu, mxPopupMenu
 createSvg, mxShape
 createSvgCanvas, mxShape
 createSvgGradient, mxSvgCanvas2D
 createSwimlaneLayout, mxEditor
 createSwimlaneManager, mxEditor
 createTargetVertex, mxConnectionHandler
 createTasks, mxEditor
 createText, mxVmlCanvas2D
 createTextDiv, mxCellEditor
 createTolerance, mxSvgCanvas2D
 createToolbar, mxEditor
 createTooltipHandler, mxGraph
 createTransparentFill, mxVmlCanvas2D
 createTransparentSvgRectangle, mxShape
 createUndoableEdit, mxGraphModel
 createUrlConverter, mxAbstractCanvas2D
 createVertex, mxGraph
 createVertexHandler, mxGraph
 createVirtualBend, mxElbowEdgeHandler
 createVirtualBends, mxEdgeHandler
 createVml, mxShape
 createVmlCanvas, mxShape
 createVmlElement, mxVmlCanvas2D
 createVmlGroup, mxShape
 createVmlPane, mxGraphView
 createXmlDocument, mxUtils
 crossingStage
 curveTo
 cut, mxClipboard
 cycleAttribute, mxEditor
 cycleStage
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
C
 calcAttraction, mxFastOrganicLayout
 calcPositions, mxFastOrganicLayout
 calcRepulsion, mxFastOrganicLayout
 calcRowDims, mxRadialTreeLayout
 calculateCrossings, mxMedianHybridCrossingReduction
 calculatedWeightedValue, mxCoordinateAssignment
 calculateRankCrossing, mxMedianHybridCrossingReduction
 calculateWidestRank, mxCoordinateAssignment
 canExportCell, mxGraph
 canImportCell, mxGraph
 canRedo, mxUndoManager
 canUndo, mxUndoManager
 cascadeOpacity
 cellAdded
 cellCloned, mxGraphModel
 cellConnected, mxGraph
 cellLabelChanged, mxGraph
 cellRemoved
 cellResized
 cellsAdded
 cellsFolded, mxGraph
 cellSizeUpdated, mxGraph
 cellsMoved
 cellsOrdered, mxGraph
 cellsRemoved, mxGraph
 cellsResized
 cellsToggled, mxGraph
 center, mxGraph
 changePoints, mxEdgeHandler
 changeSelection, mxGraphSelectionModel
 changeTerminalPoint, mxEdgeHandler
 check, mxMultiplicity
 checkBounds
 checkLabelHandle, mxEdgeHandler
 checkNeighbors, mxMultiplicity
 checkTerminal, mxMultiplicity
 checkTolerance, mxVertexHandler
 checkType, mxMultiplicity
 circle, mxCircleLayout
 clear
 clearCellOverlays, mxGraph
 clearSelection
 click, mxGraph
 clone
 cloneCell, mxGraphModel
 cloneCellImpl, mxGraphModel
 cloneCells
 clonePreviewState, mxEdgeHandler
 cloneTemplate, mxObjectCodec
 cloneValue, mxCell
 close
 collapsedStateForCellChanged, mxGraphModel
 compare
 computeAspect, mxStencil
 configure, mxEditor
 configureCanvas
 configureShape, mxCellRenderer
 confirm, mxUtils
 connect
 connectCell, mxGraph
 constrainChild, mxGraph
 constrainChildCells, mxGraph
 consume
 consumeCycleAttribute, mxEditor
 consumeMouseEvent, mxGraph
 consumePanningTrigger, mxPanningHandler
 contains
 convert, mxUrlConverter
 convertAttributeFromXml, mxObjectCodec
 convertAttributeToXml, mxObjectCodec
 convertHtml, mxSvgCanvas2D
 convertPoint
 convertValueToString, mxGraph
 convertWaypoint, mxConnectionHandler
 copy, mxClipboard
 copyStyle, mxVertexHandler
 create
 createBackgroundPageShape, mxGraphView
 createBends
 createBoundingBox, mxShape
 createBounds, mxVertexHandler
 createCanvas, mxShape
 createCellEditor, mxGraph
 createCellOverlays, mxCellRenderer
 createCellRenderer, mxGraph
 createClip, mxSvgCanvas2D
 createConditions, mxDefaultPopupMenu
 createConnectionHandler, mxGraph
 createControl, mxCellRenderer
 createCustomHandles, mxVertexHandler
 createDashPattern, mxSvgCanvas2D
 createDefaultEdgeStyle, mxStylesheet
 createDefaultVertexStyle, mxStylesheet
 createDiagramLayout, mxEditor
 createDiv, mxSvgCanvas2D
 createDragElement, mxDragSource
 createEdge
 createEdgeHandler, mxGraph
 createEdgeSegmentHandler, mxGraph
 createEdgeState, mxConnectionHandler
 createElbowEdgeHandler, mxGraph
 createElement
 createFill, mxVmlCanvas2D
 createGradientId, mxSvgCanvas2D
 createGraph
 createGraphHandler, mxGraph
 createGraphView, mxGraph
 createGroup, mxEditor
 createGroupCell, mxGraph
 createGuideShape, mxGuide
 createHandler, mxGraph
 createHandlers, mxGraph
 createHandleShape, mxEdgeHandler
 createHtml
 createHtmlPane, mxGraphView
 createIcons, mxConnectionHandler
 createId, mxGraphModel
 createImage, mxUtils
 createIndicatorShape, mxCellRenderer
 createInternalCells
 createLabel, mxCellRenderer
 createLabelHandleShape, mxEdgeHandler
 createLayoutManager, mxEditor
 createLine, mxCompactTreeLayout
 createMarker
 createMenu, mxDefaultPopupMenu
 createNode, mxCompactTreeLayout
 createPageSelector, mxPrintPreview
 createPanningHandler, mxGraph
 createPanningManager, mxGraph
 createParentHighlightShape, mxVertexHandler
 createPopupMenu, mxEditor
 createPopupMenuHandler, mxGraph
 createPreviewElement, mxDragSource
 createPreviewShape, mxGraphHandler
 createProperties, mxEditor
 createRect, mxVmlCanvas2D
 createRoot, mxGraphModel
 createSelectionCellsHandler, mxGraph
 createSelectionModel, mxGraph
 createSelectionShape
 createShadow
 createShadowFill, mxVmlCanvas2D
 createShadowStroke, mxVmlCanvas2D
 createShape
 createSizer
 createSizerShape, mxVertexHandler
 createState
 createStroke, mxVmlCanvas2D
 createStyle, mxSvgCanvas2D
 createStylesheet, mxGraph
 createSubmenu, mxPopupMenu
 createSvg, mxShape
 createSvgCanvas, mxShape
 createSvgGradient, mxSvgCanvas2D
 createSwimlaneLayout, mxEditor
 createSwimlaneManager, mxEditor
 createTargetVertex, mxConnectionHandler
 createTasks, mxEditor
 createText, mxVmlCanvas2D
 createTextDiv, mxCellEditor
 createTolerance, mxSvgCanvas2D
 createToolbar, mxEditor
 createTooltipHandler, mxGraph
 createTransparentFill, mxVmlCanvas2D
 createTransparentSvgRectangle, mxShape
 createUndoableEdit, mxGraphModel
 createUrlConverter, mxAbstractCanvas2D
 createVertex, mxGraph
 createVertexHandler, mxGraph
 createVirtualBend, mxElbowEdgeHandler
 createVirtualBends, mxEdgeHandler
 createVml, mxShape
 createVmlCanvas, mxShape
 createVmlElement, mxVmlCanvas2D
 createVmlGroup, mxShape
 createVmlPane, mxGraphView
 createXmlDocument, mxUtils
 crossingStage
 curveTo
 cut, mxClipboard
 cycleAttribute, mxEditor
 cycleStage
-
mxFastOrganicLayout.prototype.calcAttraction = function()
Calculates the attractive forces between all laid out nodes linked by edges
mxFastOrganicLayout.prototype.calcPositions = function()
Takes the displacements calculated for each cell and applies them to the local cache of cell positions.
mxFastOrganicLayout.prototype.calcRepulsion = function()
Calculates the repulsive forces between all laid out nodes
mxRadialTreeLayout.prototype.calcRowDims = function(row,
rowNum)
Recursive function to calculate the dimensions of each row
mxMedianHybridCrossingReduction.prototype.calculateCrossings = function(model)
Calculates the total number of edge crossing in the current graph.
mxCoordinateAssignment.prototype.calculatedWeightedValue = function(
   currentCell,
   collection
)
Calculates the priority the specified cell has based on the type of its cell and the cells it is connected to on the next layer
mxMedianHybridCrossingReduction.prototype.calculateRankCrossing = function(
   i,
   model
)
Calculates the number of edges crossings between the specified rank and the rank below it.
mxCoordinateAssignment.prototype.calculateWidestRank = function(graph,
model)
Calculates the width rank in the hierarchy.
mxGraph.prototype.canExportCell = function(cell)
Returns true if the given cell may be exported to the clipboard.
mxGraph.prototype.canImportCell = function(cell)
Returns true if the given cell may be imported from the clipboard.
mxUndoManager.prototype.canRedo = function()
Returns true if a redo is possible.
mxUndoManager.prototype.canUndo = function()
Returns true if an undo is possible.
cascadeOpacity: function(graph,
cell,
opacity)
Sets the opacity on the given cell and its descendants.
cascadeOpacity: function(graph,
cell,
opacity)
See mxEffects.cascadeOpacity.
mxGraphModel.prototype.cellAdded = function(cell)
Inner callback to update cells when a cell has been added.
mxGraphSelectionModel.prototype.cellAdded = function(cell)
Inner callback to add the specified mxCell to the selection.
mxGraphModel.prototype.cellCloned = function(cell)
Hook for cloning the cell.
mxGraph.prototype.cellConnected = function(edge,
terminal,
source,
constraint)
Sets the new terminal for the given edge and resets the edge points if resetEdgesOnConnect is true.
mxGraph.prototype.cellLabelChanged = function(cell,
value,
autoSize)
Sets the new label for a cell.
mxGraphModel.prototype.cellRemoved = function(cell)
Inner callback to update cells when a cell has been removed.
mxGraphSelectionModel.prototype.cellRemoved = function(cell)
Inner callback to remove the specified mxCell from the selection.
mxGraph.prototype.cellResized = function(cell,
bounds,
ignoreRelative,
recurse)
Resizes the parents recursively so that they contain the complete area of the resized child cell.
mxSpaceManager.prototype.cellResized = function(cell)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxGraph.prototype.cellsAdded = function(cells,
parent,
index,
source,
target,
absolute,
constrain)
Adds the specified cells to the given parent.
mxSwimlaneManager.prototype.cellsAdded = function(cells)
Called if any cells have been added.
mxGraph.prototype.cellsFolded = function(cells,
collapse,
recurse,
checkFoldable)
Sets the collapsed state of the specified cells.
mxGraph.prototype.cellSizeUpdated = function(cell,
ignoreChildren)
Updates the size of the given cell in the model using getPreferredSizeForCell to get the new size.
mxGraph.prototype.cellsMoved = function(cells,
dx,
dy,
disconnect,
constrain,
extend)
Moves the specified cells by the given vector, disconnecting the cells using disconnectGraph is disconnect is true.
mxLayoutManager.prototype.cellsMoved = function(cells,
evt)
Called from the moveHandler.
mxGraph.prototype.cellsOrdered = function(cells,
back)
Moves the given cells to the front or back.
mxGraph.prototype.cellsRemoved = function(cells)
Removes the given cells from the model.
mxGraph.prototype.cellsResized = function(cells,
bounds,
recurse)
Sets the bounds of the given cells and fires a mxEvent.CELLS_RESIZED event.
mxSpaceManager.prototype.cellsResized = function(cells)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxSwimlaneManager.prototype.cellsResized = function(cells)
Called if any cells have been resizes.
mxGraph.prototype.cellsToggled = function(cells,
show)
Sets the visible state of the specified cells.
mxGraph.prototype.center = function(horizontal,
vertical)
Centers the graph in the container.
mxEdgeHandler.prototype.changePoints = function(edge,
points,
clone)
Changes the control points of the given edge in the graph model.
mxGraphSelectionModel.prototype.changeSelection = function(added,
removed)
Inner callback to add the specified mxCell to the selection.
mxEdgeHandler.prototype.changeTerminalPoint = function(edge,
point,
isSource,
clone)
Changes the terminal point of the given edge.
mxMultiplicity.prototype.check = function(graph,
edge,
source,
target,
sourceOut,
targetIn)
Checks the multiplicity for the given arguments and returns the error for the given connection or null if the multiplicity does not apply.
mxShape.prototype.checkBounds = function()
Returns true if the bounds are not null and all of its variables are numeric.
mxText.prototype.checkBounds = function()
Returns true if the bounds are not null and all of its variables are numeric.
mxEdgeHandler.prototype.checkLabelHandle = function(b)
Checks if the label handle intersects the given bounds and moves it if it intersects.
mxMultiplicity.prototype.checkNeighbors = function(graph,
edge,
source,
target)
Checks if there are any valid neighbours in validNeighbors.
mxMultiplicity.prototype.checkTerminal = function(graph,
terminal,
edge)
Checks the given terminal cell and returns true if this rule applies.
mxVertexHandler.prototype.checkTolerance = function(me)
Checks if the coordinates for the given event are within the mxGraph.tolerance.
mxMultiplicity.prototype.checkType = function(graph,
value,
type,
attr,
attrValue)
Checks the type of the given value.
mxCircleLayout.prototype.circle = function(vertices,
r,
left,
top)
Executes the circular layout for the specified array of vertices and the given radius.
mxDictionary.prototype.clear = function()
Clears the dictionary.
mxGraphModel.prototype.clear = function()
Sets a new root using createRoot.
mxGraphSelectionModel.prototype.clear = function()
Clears the selection and fires a change event if the selection was not empty.
mxGraphView.prototype.clear = function(cell,
force,
recurse)
Removes the state of the given cell and all descendants if the given cell is not the current root.
clear: function(obj)
Removes the object id from the given object.
mxShape.prototype.clear = function()
Removes all child nodes and resets all CSS.
mxUndoManager.prototype.clear = function()
Clears the command history.
mxGraph.prototype.clearCellOverlays = function(cell)
Removes all mxCellOverlays in the graph for the given cell and all its descendants.
mxGraph.prototype.clearSelection = function()
Clears the selection using mxGraphSelectionModel.clear.
clearSelection: function()
Clears the current selection in the page.
mxGraph.prototype.click = function(me)
Processes a singleclick on an optional cell and fires a click event.
mxCell.prototype.clone = function()
Returns a clone of the cell.
mxCellState.prototype.clone = function()
Returns a clone of this mxPoint.
mxPoint.prototype.clone = function()
Returns a clone of this mxPoint.
clone: function(obj,
transients,
shallow)
Recursively clones the specified object ignoring all fieldnames in the given array of transient fields.
mxGraphModel.prototype.cloneCell = function(cell)
Returns a deep clone of the given mxCell (including the children) which is created using cloneCells.
mxGraphModel.prototype.cloneCellImpl = function(cell,
mapping,
includeChildren)
Inner helper method for cloning cells recursively.
mxGraph.prototype.cloneCells = function(cells,
allowInvalidEdges)
Returns the clones for the given cells.
mxGraphModel.prototype.cloneCells = function(cells,
includeChildren)
Returns an array of clones for the given array of mxCells.
mxEdgeHandler.prototype.clonePreviewState = function(point,
terminal)
Returns a clone of the current preview state for the given point and terminal.
mxObjectCodec.prototype.cloneTemplate = function()
Returns a new instance of the template for this codec.
mxCell.prototype.cloneValue = function()
Returns a clone of the cell’s user object.
mxAbstractCanvas2D.prototype.close = function(x1,
y1,
x2,
y2,
x3,
y3)
Closes the current path.
mxPrintPreview.prototype.close = function()
Closes the print preview window.
mxXmlCanvas2D.prototype.close = function()
Closes the current path.
mxGraphModel.prototype.collapsedStateForCellChanged = function(cell,
collapsed)
Inner callback to update the collapsed state of the given mxCell using mxCell.setCollapsed and return the previous collapsed state.
MedianCellSorter.prototype.compare = function(a,
b)
Compares two MedianCellSorters.
compare: function(p1,
p2)
Compares the given cell paths and returns -1 if p1 is smaller, 0 if p1 is equal and 1 if p1 is greater than p2.
WeightedCellSorter.prototype.compare = function(a,
b)
Compares two WeightedCellSorters.
mxStencil.prototype.computeAspect = function(shape,
x,
y,
w,
h,
direction)
Returns a rectangle that contains the offset in x and y and the horizontal and vertical scale in width and height used to draw this shape inside the given mxRectangle.
mxEditor.prototype.configure = function (node)
Configures the editor using the specified node.
mxShape.prototype.configureCanvas = function(c,
x,
y,
w,
h)
Sets the state of the canvas for drawing the shape.
mxText.prototype.configureCanvas = function(c,
x,
y,
w,
h)
Sets the state of the canvas for drawing the shape.
mxCellRenderer.prototype.configureShape = function(state)
Configures the shape for the given cell state.
confirm: function(message)
Displays the given message in a confirm dialog.
mxConnectionHandler.prototype.connect = function(source,
target,
evt,
dropTarget)
Connects the given source and target using a new edge.
mxDefaultToolbar.prototype.connect = function(vertex,
evt,
source)
Handles a drop by connecting the given vertex to the given source cell.
mxEdgeHandler.prototype.connect = function(edge,
terminal,
isSource,
isClone,
me)
Changes the terminal or terminal point of the given edge in the graph model.
mxGraph.prototype.connectCell = function(edge,
terminal,
source,
constraint)
Connects the specified end of the given edge to the given terminal using cellConnected and fires mxEvent.CONNECT_CELL while the transaction is in progress.
mxGraph.prototype.constrainChild = function(cell)
Keeps the given cell inside the bounds returned by getCellContainmentArea for its parent, according to the rules defined by getOverlap and isConstrainChild.
mxGraph.prototype.constrainChildCells = function(cell)
Constrains the children of the given cell using constrainChild.
consume: function(evt,
preventDefault,
stopPropagation)
Consumes the given event.
mxEventObject.prototype.consume = function()
Consumes the event.
mxMouseEvent.prototype.consume = function(preventDefault)
Sets consumed to true and invokes preventDefault on the native event if such a method is defined.
mxEditor.prototype.consumeCycleAttribute = function (cell)
Returns the next attribute in cycleAttributeValues or null, if not attribute should be used in the specified cell.
mxGraph.prototype.consumeMouseEvent = function(evtName,
me,
sender)
Destroys the graph and all its resources.
mxPanningHandler.prototype.consumePanningTrigger = function(me)
Consumes the given mxMouseEvent if it was a panning trigger in mouseDown.
mxGraphModel.prototype.contains = function(cell)
Returns true if the model contains the given mxCell.
contains: function(bounds,
x,
y)
Returns true if the specified point (x, y) is contained in the given rectangle.
mxUrlConverter.prototype.convert = function(url)
Converts the given URL to an absolute URL with protol and domain.
mxObjectCodec.prototype.convertAttributeFromXml = function(dec,
attr,
obj)
Converts booleans and numeric values to the respective types.
mxObjectCodec.prototype.convertAttributeToXml = function(enc,
obj,
name,
value)
Converts true to “1” and false to “0” is isBooleanAttribute returns true.
mxEdgeHandler.prototype.convertPoint = function(point,
gridEnabled)
Converts the given point in-place from screen to unscaled, untranslated graph coordinates and applies the grid.
mxElbowEdgeHandler.prototype.convertPoint = function(point,
gridEnabled)
Converts the given point in-place from screen to unscaled, untranslated graph coordinates and applies the grid.
convertPoint: function(container,
x,
y)
Converts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.
mxGraph.prototype.convertValueToString = function(cell)
Returns the textual representation for the given cell.
mxConnectionHandler.prototype.convertWaypoint = function(point)
Converts the given point from screen coordinates to model coordinates.
copy: function(graph,
cells)
Copies the given array of mxCells from the specified graph to cells.Returns the original array of cells that has been cloned.
mxHandle.prototype.copyStyle = function(key)
Sets the cell style with the given name to the corresponding value in state.
create: function(cell)
Creates the cell path for the given cell.
mxGraphView.prototype.createHtml = function()
Creates the DOM nodes for the HTML display.
mxShape.prototype.create = function(container)
Creates and returns the DOM node(s) for the shape in the given container.
mxXmlRequest.prototype.create = function()
Creates and returns the inner request object.
mxGraphView.prototype.createBackgroundPageShape = function(bounds)
Creates and returns the shape used as the background page.
Adds custom bends for the center of each segment.
mxEdgeHandler.prototype.createBends = function()
Creates and returns the bends used for modifying the edge.
mxElbowEdgeHandler.prototype.createBends = function()
Overrides mxEdgeHandler.createBends to create custom bends.
mxShape.prototype.createBoundingBox = function()
Returns a new rectangle that represents the bounding box of the bare shape with no shadows or strokewidths.
Helper method to create an mxRectangle around the given centerpoint with a width and height of 2*s or 6, if no s is given.
mxShape.prototype.createCanvas = function()
Destroys the given canvas which was used for drawing.
mxGraph.prototype.createCellEditor = function()
Creates a new mxCellEditor to be used in this graph.
mxCellRenderer.prototype.createCellOverlays = function(state)
Creates the actual shape for showing the overlay for the given cell state.
mxGraph.prototype.createCellRenderer = function()
Creates a new mxCellRenderer to be used in this graph.
mxSvgCanvas2D.prototype.createClip = function(x,
y,
w,
h)
Creates a clip for the given coordinates.
mxDefaultPopupMenu.prototype.createConditions = function(editor,
cell,
evt)
Evaluates the default conditions for the given context.
mxGraph.prototype.createConnectionHandler = function()
Creates and returns a new mxConnectionHandler to be used in this graph.
mxCellRenderer.prototype.createControl = function(state)
Creates the control for the given cell state.
mxVertexHandler.prototype.createCustomHandles = function()
Returns true if the aspect ratio if the cell should be maintained.
mxSvgCanvas2D.prototype.createDashPattern = function(scale)
Creates the SVG dash pattern for the given state.
mxStylesheet.prototype.createDefaultEdgeStyle = function()
Creates and returns the default edge style.
mxStylesheet.prototype.createDefaultVertexStyle = function()
Creates and returns the default vertex style.
mxEditor.prototype.createDiagramLayout = function ()
Creates the layout instance used to layout the swimlanes in the diagram.
mxSvgCanvas2D.prototype.createDiv = function(str,
align,
valign,
style,
overflow)
Private helper function to create SVG elements
mxDragSource.prototype.createDragElement = function(evt)
Creates and returns a clone of the dragElementPrototype or the element if the former is not defined.
mxConnectionHandler.prototype.createEdge = function(value,
source,
target,
style)
Creates and returns a new edge using factoryMethod if one exists.
mxEditor.prototype.createEdge = function (source,
target)
Uses defaultEdge as the prototype for creating new edges in the connection handler of the graph.
mxGraph.prototype.createEdge = function(parent,
id,
value,
source,
target,
style)
Hook method that creates the new edge for insertEdge.
mxGraph.prototype.createEdgeHandler = function(state)
Hooks to create a new mxEdgeHandler for the given mxCellState.
mxGraph.prototype.createEdgeSegmentHandler = function(state)
Hooks to create a new mxEdgeSegmentHandler for the given mxCellState.
mxConnectionHandler.prototype.createEdgeState = function(me)
Hook to return an mxCellState which may be used during the preview.
mxGraph.prototype.createElbowEdgeHandler = function(state)
Hooks to create a new mxElbowEdgeHandler for the given mxCellState.
mxSvgCanvas2D.prototype.createElement = function(tagName,
namespace)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.createElement = function(name)
Creates the given element using the document.
mxXmlCanvas2D.prototype.createElement = function(name)
Creates the given element using the owner document of root.
mxVmlCanvas2D.prototype.createFill = function()
Creates a fill for the current state.
mxSvgCanvas2D.prototype.createGradientId = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxEditor.prototype.createGraph = function ()
Creates the graph for the editor.
mxOutline.prototype.createGraph = function(container)
Creates the mxGraph used in the outline.
mxGraph.prototype.createGraphHandler = function()
Creates and returns a new mxGraphHandler to be used in this graph.
mxGraph.prototype.createGraphView = function()
Creates a new mxGraphView to be used in this graph.
mxEditor.prototype.createGroup = function ()
Creates and returns a clone of defaultGroup to be used as a new group cell in group.
mxGraph.prototype.createGroupCell = function(cells)
Hook for creating the group cell to hold the given array of mxCells if no group cell was given to the group function.
mxGuide.prototype.createGuideShape = function(horizontal)
Returns the mxShape to be used for painting the respective guide.
mxGraph.prototype.createHandler = function(state)
Creates a new handler for the given cell state.
mxGraph.prototype.createHandlers = function()
Creates the tooltip-, panning-, connection- and graph-handler (in this order).
mxEdgeHandler.prototype.createHandleShape = function(index)
Creates the shape used to display the given bend.
mxImageShape.prototype.createHtml = function()
Creates and returns the HTML DOM node(s) to represent this shape.
mxShape.prototype.createHtml = function()
Creates and returns the HTML DOM node(s) to represent this shape.
mxGraphView.prototype.createHtmlPane = function(width,
height)
Creates and returns a drawing pane in HTML (DIV).
mxConnectionHandler.prototype.createIcons = function(state)
Creates the array mxImageShapes that represent the connect icons for the given mxCellState.
mxGraphModel.prototype.createId = function(cell)
Hook method to create an Id for the specified cell.
createImage: function(src)
Creates and returns an image (IMG node) or VML image (v:image) in IE6 in quirks mode.
mxCellRenderer.prototype.createIndicatorShape = function(state)
Creates the indicator shape for the given cell state.
mxGraphHierarchyModel.prototype.createInternalCells = function(layout,
vertices,
internalVertices)
Creates all edges in the internal model
mxSwimlaneModel.prototype.createInternalCells = function(layout,
vertices,
internalVertices)
Creates all edges in the internal model
mxCellRenderer.prototype.createLabel = function(state,
value)
Creates the label for the given cell state.
mxEdgeHandler.prototype.createLabelHandleShape = function()
Creates the shape used to display the the label handle.
mxEditor.prototype.createLayoutManager = function (graph)
Creates a layout manager for the swimlane and diagram layouts, that is, the locally defined inter- and intraswimlane layouts.
mxCompactTreeLayout.prototype.createLine = function(dx,
dy,
next)
mxConnectionHandler.prototype.createMarker = function()
Creates and returns the mxCellMarker used in marker.
mxConnector.prototype.createMarker = function(c,
pts,
source)
Prepares the marker by adding offsets in pts and returning a function to paint the marker.
mxEdgeHandler.prototype.createMarker = function()
Creates and returns the mxCellMarker used in marker.
createMarker: function(canvas,
shape,
type,
pe,
unitX,
unitY,
size,
source,
sw,
filled)
Returns a function to paint the given marker.
mxDefaultPopupMenu.prototype.createMenu = function(editor,
menu,
cell,
evt)
This function is called from mxEditor to add items to the given menu based on config.
mxCompactTreeLayout.prototype.createNode = function(cell)
mxPrintPreview.prototype.createPageSelector = function(vpages,
hpages)
Creates the page selector table.
mxGraph.prototype.createPanningHandler = function()
Creates and returns a new mxPanningHandler to be used in this graph.
mxGraph.prototype.createPanningManager = function()
Creates and returns an mxPanningManager.
mxVertexHandler.prototype.createParentHighlightShape = function(bounds)
Creates the shape used to draw the selection border.
mxEditor.prototype.createPopupMenu = function (menu,
cell,
evt)
Uses popupHandler to create the menu in the graph’s panning handler.
mxGraph.prototype.createPopupMenuHandler = function()
Creates and returns a new mxPopupMenuHandler to be used in this graph.
mxDragSource.prototype.createPreviewElement = function(graph)
Creates and returns an element which can be used as a preview in the given graph.
mxGraphHandler.prototype.createPreviewShape = function(bounds)
Creates the shape used to draw the preview for the given bounds.
mxEditor.prototype.createProperties = function (cell)
Creates and returns the DOM node that represents the contents of the properties dialog for the given cell.
mxVmlCanvas2D.prototype.createRect = function(nodeName,
x,
y,
w,
h)
Sets the glass gradient.
mxGraphModel.prototype.createRoot = function()
Creates a new root cell with a default layer (child 0).
mxGraph.prototype.createSelectionCellsHandler = function()
Creates and returns a new mxTooltipHandler to be used in this graph.
mxGraph.prototype.createSelectionModel = function()
Creates a new mxGraphSelectionModel to be used in this graph.
Creates the shape used to draw the selection border.
mxVertexHandler.prototype.createSelectionShape = function(bounds)
Creates the shape used to draw the selection border.
mxSvgCanvas2D.prototype.createShadow = function(node)
Creates a shadow for the given node.
mxVmlCanvas2D.prototype.createShadow = function(node,
filled,
stroked)
Creates a shadow for the given node.
mxVmlCanvas2D.prototype.createShadowFill = function()
Creates the fill for the shadow.
mxVmlCanvas2D.prototype.createShadowStroke = function()
Creates the stroke for the shadow.
mxCellHighlight.prototype.createShape = function()
Creates and returns the highlight shape for the given state.
mxCellRenderer.prototype.createShape = function(state)
Creates the shape for the given cell state.
mxConnectionHandler.prototype.createShape = function()
Creates the preview shape for new connections.
mxRubberband.prototype.createShape = function()
Creates the rubberband selection shape.
mxHandle.prototype.createShape = function(html)
Creates and returns the shape for this handle.
mxOutline.prototype.createSizer = function()
Creates the shape used as the sizer.
mxVertexHandler.prototype.createSizer = function(cursor,
index,
size,
fillColor)
Creates a sizer handle for the specified cursor and index and returns the new mxRectangleShape that represents the handle.
mxVertexHandler.prototype.createSizerShape = function(bounds,
index,
fillColor)
Creates the shape used for the sizer handle for the specified bounds an index.
mxAbstractCanvas2D.prototype.createState = function()
Creates the state of the this canvas.
mxGraphView.prototype.createState = function(cell)
Creates and returns an mxCellState for the given cell and initializes it using mxCellRenderer.initialize.
mxVmlCanvas2D.prototype.createStroke = function()
Creates a fill for the current state.
mxSvgCanvas2D.prototype.createStyle = function(x)
Creates the optional style section.
mxGraph.prototype.createStylesheet = function()
Creates a new mxGraphSelectionModel to be used in this graph.
mxPopupMenu.prototype.createSubmenu = function(parent)
Creates the nodes required to add submenu items inside the given parent item.
mxShape.prototype.createSvg = function()
Creates and returns the SVG node(s) to represent this shape.
mxShape.prototype.createSvgCanvas = function()
Creates and returns an mxSvgCanvas2D for rendering this shape.
mxSvgCanvas2D.prototype.createSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Creates the given SVG gradient.
mxEditor.prototype.createSwimlaneLayout = function ()
Creates the layout instance used to layout the children of each swimlane.
mxEditor.prototype.createSwimlaneManager = function (graph)
Sets the graph’s container using mxGraph.init.
mxConnectionHandler.prototype.createTargetVertex = function(evt,
source)
Hook method for creating new vertices on the fly if no target was under the mouse.
mxEditor.prototype.createTasks = function (div)
Updates the contents of the given DOM node to display the tasks associated with the current editor state.
Creates the innermost element that contains the HTML text.
mxCellEditor.prototype.createTextDiv = function()
Creates the textDiv used for measuring text.
mxSvgCanvas2D.prototype.createTolerance = function(node)
Creates a hit detection tolerance shape for the given node.
mxEditor.prototype.createToolbar = function ()
Creates the toolbar with no container.
mxGraph.prototype.createTooltipHandler = function()
Creates and returns a new mxTooltipHandler to be used in this graph.
mxVmlCanvas2D.prototype.createTransparentFill = function()
Creates a transparent fill.
mxShape.prototype.createTransparentSvgRectangle = function(x,
y,
w,
h)
Adds a transparent rectangle that catches all events.
mxGraphModel.prototype.createUndoableEdit = function()
Creates a new mxUndoableEdit that implements the notify function to fire a change and notify event through the mxUndoableEdit’s source.
mxAbstractCanvas2D.prototype.createUrlConverter = function()
Create a new mxUrlConverter and returns it.
mxGraph.prototype.createVertex = function(parent,
id,
value,
x,
y,
width,
height,
style,
relative)
Hook method that creates the new vertex for insertVertex.
mxGraph.prototype.createVertexHandler = function(state)
Hooks to create a new mxVertexHandler for the given mxCellState.
mxElbowEdgeHandler.prototype.createVirtualBend = function(dblClickHandler)
Creates a virtual bend that supports double clicking and calls mxGraph.flipEdge.
mxEdgeHandler.prototype.createVirtualBends = function()
Creates and returns the bends used for modifying the edge.
mxShape.prototype.createVml = function()
Creates and returns the VML node to represent this shape.
mxShape.prototype.createVmlCanvas = function()
Creates and returns an mxVmlCanvas2D for rendering this shape.
mxVmlCanvas2D.prototype.createVmlElement = function(name)
Creates a new element using createElement and prefixes the given name with mxClient.VML_PREFIX.
mxShape.prototype.createVmlGroup = function()
Returns the temporary element used for rendering in IE8 standards mode.
mxGraphView.prototype.createVmlPane = function(width,
height)
Creates a drawing pane in VML (group).
createXmlDocument: function()
Returns a new, empty XML document.
mxHierarchicalLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxSwimlaneLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxAbstractCanvas2D.prototype.curveTo = function(x1,
y1,
x2,
y2,
x3,
y3)
Adds a bezier curve to the current path.
mxXmlCanvas2D.prototype.curveTo = function(x1,
y1,
x2,
y2,
x3,
y3)
Adds a bezier curve to the current path.
cut: function(graph,
cells)
Cuts the given array of mxCells from the specified graph.
mxEditor.prototype.cycleAttribute = function (cell)
Uses the returned value from consumeCycleAttribute as the value for the cycleAttributeName key in the given cell’s style.
mxHierarchicalLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
mxSwimlaneLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
+
mxFastOrganicLayout.prototype.calcAttraction = function()
Calculates the attractive forces between all laid out nodes linked by edges
mxFastOrganicLayout.prototype.calcPositions = function()
Takes the displacements calculated for each cell and applies them to the local cache of cell positions.
mxFastOrganicLayout.prototype.calcRepulsion = function()
Calculates the repulsive forces between all laid out nodes
mxRadialTreeLayout.prototype.calcRowDims = function(row,
rowNum)
Recursive function to calculate the dimensions of each row
mxMedianHybridCrossingReduction.prototype.calculateCrossings = function(model)
Calculates the total number of edge crossing in the current graph.
mxCoordinateAssignment.prototype.calculatedWeightedValue = function(
   currentCell,
   collection
)
Calculates the priority the specified cell has based on the type of its cell and the cells it is connected to on the next layer
mxMedianHybridCrossingReduction.prototype.calculateRankCrossing = function(
   i,
   model
)
Calculates the number of edges crossings between the specified rank and the rank below it.
mxCoordinateAssignment.prototype.calculateWidestRank = function(graph,
model)
Calculates the width rank in the hierarchy.
mxGraph.prototype.canExportCell = function(cell)
Returns true if the given cell may be exported to the clipboard.
mxGraph.prototype.canImportCell = function(cell)
Returns true if the given cell may be imported from the clipboard.
mxUndoManager.prototype.canRedo = function()
Returns true if a redo is possible.
mxUndoManager.prototype.canUndo = function()
Returns true if an undo is possible.
cascadeOpacity: function(graph,
cell,
opacity)
Sets the opacity on the given cell and its descendants.
cascadeOpacity: function(graph,
cell,
opacity)
See mxEffects.cascadeOpacity.
mxGraphModel.prototype.cellAdded = function(cell)
Inner callback to update cells when a cell has been added.
mxGraphSelectionModel.prototype.cellAdded = function(cell)
Inner callback to add the specified mxCell to the selection.
mxGraphModel.prototype.cellCloned = function(cell)
Hook for cloning the cell.
mxGraph.prototype.cellConnected = function(edge,
terminal,
source,
constraint)
Sets the new terminal for the given edge and resets the edge points if resetEdgesOnConnect is true.
mxGraph.prototype.cellLabelChanged = function(cell,
value,
autoSize)
Sets the new label for a cell.
mxGraphModel.prototype.cellRemoved = function(cell)
Inner callback to update cells when a cell has been removed.
mxGraphSelectionModel.prototype.cellRemoved = function(cell)
Inner callback to remove the specified mxCell from the selection.
mxGraph.prototype.cellResized = function(cell,
bounds,
ignoreRelative,
recurse)
Resizes the parents recursively so that they contain the complete area of the resized child cell.
mxSpaceManager.prototype.cellResized = function(cell)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxGraph.prototype.cellsAdded = function(cells,
parent,
index,
source,
target,
absolute,
constrain)
Adds the specified cells to the given parent.
mxSwimlaneManager.prototype.cellsAdded = function(cells)
Called if any cells have been added.
mxGraph.prototype.cellsFolded = function(cells,
collapse,
recurse,
checkFoldable)
Sets the collapsed state of the specified cells.
mxGraph.prototype.cellSizeUpdated = function(cell,
ignoreChildren)
Updates the size of the given cell in the model using getPreferredSizeForCell to get the new size.
mxGraph.prototype.cellsMoved = function(cells,
dx,
dy,
disconnect,
constrain,
extend)
Moves the specified cells by the given vector, disconnecting the cells using disconnectGraph is disconnect is true.
mxLayoutManager.prototype.cellsMoved = function(cells,
evt)
Called from the moveHandler.
mxGraph.prototype.cellsOrdered = function(cells,
back)
Moves the given cells to the front or back.
mxGraph.prototype.cellsRemoved = function(cells)
Removes the given cells from the model.
mxGraph.prototype.cellsResized = function(cells,
bounds,
recurse)
Sets the bounds of the given cells and fires a mxEvent.CELLS_RESIZED event.
mxSpaceManager.prototype.cellsResized = function(cells)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxSwimlaneManager.prototype.cellsResized = function(cells)
Called if any cells have been resizes.
mxGraph.prototype.cellsToggled = function(cells,
show)
Sets the visible state of the specified cells.
mxGraph.prototype.center = function(horizontal,
vertical)
Centers the graph in the container.
mxEdgeHandler.prototype.changePoints = function(edge,
points,
clone)
Changes the control points of the given edge in the graph model.
mxGraphSelectionModel.prototype.changeSelection = function(added,
removed)
Inner callback to add the specified mxCell to the selection.
mxEdgeHandler.prototype.changeTerminalPoint = function(edge,
point,
isSource,
clone)
Changes the terminal point of the given edge.
mxMultiplicity.prototype.check = function(graph,
edge,
source,
target,
sourceOut,
targetIn)
Checks the multiplicity for the given arguments and returns the error for the given connection or null if the multiplicity does not apply.
mxShape.prototype.checkBounds = function()
Returns true if the bounds are not null and all of its variables are numeric.
mxText.prototype.checkBounds = function()
Returns true if the bounds are not null and all of its variables are numeric.
mxEdgeHandler.prototype.checkLabelHandle = function(b)
Checks if the label handle intersects the given bounds and moves it if it intersects.
mxMultiplicity.prototype.checkNeighbors = function(graph,
edge,
source,
target)
Checks if there are any valid neighbours in validNeighbors.
mxMultiplicity.prototype.checkTerminal = function(graph,
terminal,
edge)
Checks the given terminal cell and returns true if this rule applies.
mxVertexHandler.prototype.checkTolerance = function(me)
Checks if the coordinates for the given event are within the mxGraph.tolerance.
mxMultiplicity.prototype.checkType = function(graph,
value,
type,
attr,
attrValue)
Checks the type of the given value.
mxCircleLayout.prototype.circle = function(vertices,
r,
left,
top)
Executes the circular layout for the specified array of vertices and the given radius.
mxDictionary.prototype.clear = function()
Clears the dictionary.
mxGraphModel.prototype.clear = function()
Sets a new root using createRoot.
mxGraphSelectionModel.prototype.clear = function()
Clears the selection and fires a change event if the selection was not empty.
mxGraphView.prototype.clear = function(cell,
force,
recurse)
Removes the state of the given cell and all descendants if the given cell is not the current root.
clear: function(obj)
Removes the object id from the given object.
mxShape.prototype.clear = function()
Removes all child nodes and resets all CSS.
mxUndoManager.prototype.clear = function()
Clears the command history.
mxGraph.prototype.clearCellOverlays = function(cell)
Removes all mxCellOverlays in the graph for the given cell and all its descendants.
mxGraph.prototype.clearSelection = function()
Clears the selection using mxGraphSelectionModel.clear.
clearSelection: function()
Clears the current selection in the page.
mxGraph.prototype.click = function(me)
Processes a singleclick on an optional cell and fires a click event.
mxCell.prototype.clone = function()
Returns a clone of the cell.
mxCellState.prototype.clone = function()
Returns a clone of this mxPoint.
mxPoint.prototype.clone = function()
Returns a clone of this mxPoint.
clone: function(obj,
transients,
shallow)
Recursively clones the specified object ignoring all fieldnames in the given array of transient fields.
mxGraphModel.prototype.cloneCell = function(cell)
Returns a deep clone of the given mxCell (including the children) which is created using cloneCells.
mxGraphModel.prototype.cloneCellImpl = function(cell,
mapping,
includeChildren)
Inner helper method for cloning cells recursively.
mxGraph.prototype.cloneCells = function(cells,
allowInvalidEdges)
Returns the clones for the given cells.
mxGraphModel.prototype.cloneCells = function(cells,
includeChildren)
Returns an array of clones for the given array of mxCells.
mxEdgeHandler.prototype.clonePreviewState = function(point,
terminal)
Returns a clone of the current preview state for the given point and terminal.
mxObjectCodec.prototype.cloneTemplate = function()
Returns a new instance of the template for this codec.
mxCell.prototype.cloneValue = function()
Returns a clone of the cell’s user object.
mxAbstractCanvas2D.prototype.close = function(x1,
y1,
x2,
y2,
x3,
y3)
Closes the current path.
mxPrintPreview.prototype.close = function()
Closes the print preview window.
mxXmlCanvas2D.prototype.close = function()
Closes the current path.
mxGraphModel.prototype.collapsedStateForCellChanged = function(cell,
collapsed)
Inner callback to update the collapsed state of the given mxCell using mxCell.setCollapsed and return the previous collapsed state.
MedianCellSorter.prototype.compare = function(a,
b)
Compares two MedianCellSorters.
compare: function(p1,
p2)
Compares the given cell paths and returns -1 if p1 is smaller, 0 if p1 is equal and 1 if p1 is greater than p2.
WeightedCellSorter.prototype.compare = function(a,
b)
Compares two WeightedCellSorters.
mxStencil.prototype.computeAspect = function(shape,
x,
y,
w,
h,
direction)
Returns a rectangle that contains the offset in x and y and the horizontal and vertical scale in width and height used to draw this shape inside the given mxRectangle.
mxEditor.prototype.configure = function (node)
Configures the editor using the specified node.
mxShape.prototype.configureCanvas = function(c,
x,
y,
w,
h)
Sets the state of the canvas for drawing the shape.
mxText.prototype.configureCanvas = function(c,
x,
y,
w,
h)
Sets the state of the canvas for drawing the shape.
mxCellRenderer.prototype.configureShape = function(state)
Configures the shape for the given cell state.
confirm: function(message)
Displays the given message in a confirm dialog.
mxConnectionHandler.prototype.connect = function(source,
target,
evt,
dropTarget)
Connects the given source and target using a new edge.
mxDefaultToolbar.prototype.connect = function(vertex,
evt,
source)
Handles a drop by connecting the given vertex to the given source cell.
mxEdgeHandler.prototype.connect = function(edge,
terminal,
isSource,
isClone,
me)
Changes the terminal or terminal point of the given edge in the graph model.
mxGraph.prototype.connectCell = function(edge,
terminal,
source,
constraint)
Connects the specified end of the given edge to the given terminal using cellConnected and fires mxEvent.CONNECT_CELL while the transaction is in progress.
mxGraph.prototype.constrainChild = function(cell)
Keeps the given cell inside the bounds returned by getCellContainmentArea for its parent, according to the rules defined by getOverlap and isConstrainChild.
mxGraph.prototype.constrainChildCells = function(cell)
Constrains the children of the given cell using constrainChild.
consume: function(evt,
preventDefault,
stopPropagation)
Consumes the given event.
mxEventObject.prototype.consume = function()
Consumes the event.
mxMouseEvent.prototype.consume = function(preventDefault)
Sets consumed to true and invokes preventDefault on the native event if such a method is defined.
mxEditor.prototype.consumeCycleAttribute = function (cell)
Returns the next attribute in cycleAttributeValues or null, if not attribute should be used in the specified cell.
mxGraph.prototype.consumeMouseEvent = function(evtName,
me,
sender)
Destroys the graph and all its resources.
mxPanningHandler.prototype.consumePanningTrigger = function(me)
Consumes the given mxMouseEvent if it was a panning trigger in mouseDown.
mxGraphModel.prototype.contains = function(cell)
Returns true if the model contains the given mxCell.
contains: function(bounds,
x,
y)
Returns true if the specified point (x, y) is contained in the given rectangle.
mxUrlConverter.prototype.convert = function(url)
Converts the given URL to an absolute URL with protol and domain.
mxObjectCodec.prototype.convertAttributeFromXml = function(dec,
attr,
obj)
Converts booleans and numeric values to the respective types.
mxObjectCodec.prototype.convertAttributeToXml = function(enc,
obj,
name,
value)
Converts true to “1” and false to “0” is isBooleanAttribute returns true.
mxSvgCanvas2D.prototype.convertHtml = function(val)
Converts the given HTML string to XHTML.
mxEdgeHandler.prototype.convertPoint = function(point,
gridEnabled)
Converts the given point in-place from screen to unscaled, untranslated graph coordinates and applies the grid.
mxElbowEdgeHandler.prototype.convertPoint = function(point,
gridEnabled)
Converts the given point in-place from screen to unscaled, untranslated graph coordinates and applies the grid.
convertPoint: function(container,
x,
y)
Converts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.
mxGraph.prototype.convertValueToString = function(cell)
Returns the textual representation for the given cell.
mxConnectionHandler.prototype.convertWaypoint = function(point)
Converts the given point from screen coordinates to model coordinates.
copy: function(graph,
cells)
Copies the given array of mxCells from the specified graph to cells.Returns the original array of cells that has been cloned.
mxHandle.prototype.copyStyle = function(key)
Sets the cell style with the given name to the corresponding value in state.
create: function(cell)
Creates the cell path for the given cell.
mxGraphView.prototype.createHtml = function()
Creates the DOM nodes for the HTML display.
mxShape.prototype.create = function(container)
Creates and returns the DOM node(s) for the shape in the given container.
mxXmlRequest.prototype.create = function()
Creates and returns the inner request object.
mxGraphView.prototype.createBackgroundPageShape = function(bounds)
Creates and returns the shape used as the background page.
Adds custom bends for the center of each segment.
mxEdgeHandler.prototype.createBends = function()
Creates and returns the bends used for modifying the edge.
mxElbowEdgeHandler.prototype.createBends = function()
Overrides mxEdgeHandler.createBends to create custom bends.
mxShape.prototype.createBoundingBox = function()
Returns a new rectangle that represents the bounding box of the bare shape with no shadows or strokewidths.
Helper method to create an mxRectangle around the given centerpoint with a width and height of 2*s or 6, if no s is given.
mxShape.prototype.createCanvas = function()
Destroys the given canvas which was used for drawing.
mxGraph.prototype.createCellEditor = function()
Creates a new mxCellEditor to be used in this graph.
mxCellRenderer.prototype.createCellOverlays = function(state)
Creates the actual shape for showing the overlay for the given cell state.
mxGraph.prototype.createCellRenderer = function()
Creates a new mxCellRenderer to be used in this graph.
mxSvgCanvas2D.prototype.createClip = function(x,
y,
w,
h)
Creates a clip for the given coordinates.
mxDefaultPopupMenu.prototype.createConditions = function(editor,
cell,
evt)
Evaluates the default conditions for the given context.
mxGraph.prototype.createConnectionHandler = function()
Creates and returns a new mxConnectionHandler to be used in this graph.
mxCellRenderer.prototype.createControl = function(state)
Creates the control for the given cell state.
mxVertexHandler.prototype.createCustomHandles = function()
Returns true if the aspect ratio if the cell should be maintained.
mxSvgCanvas2D.prototype.createDashPattern = function(scale)
Creates the SVG dash pattern for the given state.
mxStylesheet.prototype.createDefaultEdgeStyle = function()
Creates and returns the default edge style.
mxStylesheet.prototype.createDefaultVertexStyle = function()
Creates and returns the default vertex style.
mxEditor.prototype.createDiagramLayout = function ()
Creates the layout instance used to layout the swimlanes in the diagram.
mxSvgCanvas2D.prototype.createDiv = function(str,
align,
valign,
style,
overflow)
Private helper function to create SVG elements
mxDragSource.prototype.createDragElement = function(evt)
Creates and returns a clone of the dragElementPrototype or the element if the former is not defined.
mxConnectionHandler.prototype.createEdge = function(value,
source,
target,
style)
Creates and returns a new edge using factoryMethod if one exists.
mxEditor.prototype.createEdge = function (source,
target)
Uses defaultEdge as the prototype for creating new edges in the connection handler of the graph.
mxGraph.prototype.createEdge = function(parent,
id,
value,
source,
target,
style)
Hook method that creates the new edge for insertEdge.
mxGraph.prototype.createEdgeHandler = function(state)
Hooks to create a new mxEdgeHandler for the given mxCellState.
mxGraph.prototype.createEdgeSegmentHandler = function(state)
Hooks to create a new mxEdgeSegmentHandler for the given mxCellState.
mxConnectionHandler.prototype.createEdgeState = function(me)
Hook to return an mxCellState which may be used during the preview.
mxGraph.prototype.createElbowEdgeHandler = function(state)
Hooks to create a new mxElbowEdgeHandler for the given mxCellState.
mxSvgCanvas2D.prototype.createElement = function(tagName,
namespace)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.createElement = function(name)
Creates the given element using the document.
mxXmlCanvas2D.prototype.createElement = function(name)
Creates the given element using the owner document of root.
mxVmlCanvas2D.prototype.createFill = function()
Creates a fill for the current state.
mxSvgCanvas2D.prototype.createGradientId = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxEditor.prototype.createGraph = function ()
Creates the graph for the editor.
mxOutline.prototype.createGraph = function(container)
Creates the mxGraph used in the outline.
mxGraph.prototype.createGraphHandler = function()
Creates and returns a new mxGraphHandler to be used in this graph.
mxGraph.prototype.createGraphView = function()
Creates a new mxGraphView to be used in this graph.
mxEditor.prototype.createGroup = function ()
Creates and returns a clone of defaultGroup to be used as a new group cell in group.
mxGraph.prototype.createGroupCell = function(cells)
Hook for creating the group cell to hold the given array of mxCells if no group cell was given to the group function.
mxGuide.prototype.createGuideShape = function(horizontal)
Returns the mxShape to be used for painting the respective guide.
mxGraph.prototype.createHandler = function(state)
Creates a new handler for the given cell state.
mxGraph.prototype.createHandlers = function()
Creates the tooltip-, panning-, connection- and graph-handler (in this order).
mxEdgeHandler.prototype.createHandleShape = function(index)
Creates the shape used to display the given bend.
mxImageShape.prototype.createHtml = function()
Creates and returns the HTML DOM node(s) to represent this shape.
mxShape.prototype.createHtml = function()
Creates and returns the HTML DOM node(s) to represent this shape.
mxGraphView.prototype.createHtmlPane = function(width,
height)
Creates and returns a drawing pane in HTML (DIV).
mxConnectionHandler.prototype.createIcons = function(state)
Creates the array mxImageShapes that represent the connect icons for the given mxCellState.
mxGraphModel.prototype.createId = function(cell)
Hook method to create an Id for the specified cell.
createImage: function(src)
Creates and returns an image (IMG node) or VML image (v:image) in IE6 in quirks mode.
mxCellRenderer.prototype.createIndicatorShape = function(state)
Creates the indicator shape for the given cell state.
mxGraphHierarchyModel.prototype.createInternalCells = function(layout,
vertices,
internalVertices)
Creates all edges in the internal model
mxSwimlaneModel.prototype.createInternalCells = function(layout,
vertices,
internalVertices)
Creates all edges in the internal model
mxCellRenderer.prototype.createLabel = function(state,
value)
Creates the label for the given cell state.
mxEdgeHandler.prototype.createLabelHandleShape = function()
Creates the shape used to display the the label handle.
mxEditor.prototype.createLayoutManager = function (graph)
Creates a layout manager for the swimlane and diagram layouts, that is, the locally defined inter- and intraswimlane layouts.
mxCompactTreeLayout.prototype.createLine = function(dx,
dy,
next)
mxConnectionHandler.prototype.createMarker = function()
Creates and returns the mxCellMarker used in marker.
mxConnector.prototype.createMarker = function(c,
pts,
source)
Prepares the marker by adding offsets in pts and returning a function to paint the marker.
mxEdgeHandler.prototype.createMarker = function()
Creates and returns the mxCellMarker used in marker.
createMarker: function(canvas,
shape,
type,
pe,
unitX,
unitY,
size,
source,
sw,
filled)
Returns a function to paint the given marker.
mxDefaultPopupMenu.prototype.createMenu = function(editor,
menu,
cell,
evt)
This function is called from mxEditor to add items to the given menu based on config.
mxCompactTreeLayout.prototype.createNode = function(cell)
mxPrintPreview.prototype.createPageSelector = function(vpages,
hpages)
Creates the page selector table.
mxGraph.prototype.createPanningHandler = function()
Creates and returns a new mxPanningHandler to be used in this graph.
mxGraph.prototype.createPanningManager = function()
Creates and returns an mxPanningManager.
mxVertexHandler.prototype.createParentHighlightShape = function(bounds)
Creates the shape used to draw the selection border.
mxEditor.prototype.createPopupMenu = function (menu,
cell,
evt)
Uses popupHandler to create the menu in the graph’s panning handler.
mxGraph.prototype.createPopupMenuHandler = function()
Creates and returns a new mxPopupMenuHandler to be used in this graph.
mxDragSource.prototype.createPreviewElement = function(graph)
Creates and returns an element which can be used as a preview in the given graph.
mxGraphHandler.prototype.createPreviewShape = function(bounds)
Creates the shape used to draw the preview for the given bounds.
mxEditor.prototype.createProperties = function (cell)
Creates and returns the DOM node that represents the contents of the properties dialog for the given cell.
mxVmlCanvas2D.prototype.createRect = function(nodeName,
x,
y,
w,
h)
Sets the glass gradient.
mxGraphModel.prototype.createRoot = function()
Creates a new root cell with a default layer (child 0).
mxGraph.prototype.createSelectionCellsHandler = function()
Creates and returns a new mxTooltipHandler to be used in this graph.
mxGraph.prototype.createSelectionModel = function()
Creates a new mxGraphSelectionModel to be used in this graph.
Creates the shape used to draw the selection border.
mxVertexHandler.prototype.createSelectionShape = function(bounds)
Creates the shape used to draw the selection border.
mxSvgCanvas2D.prototype.createShadow = function(node)
Creates a shadow for the given node.
mxVmlCanvas2D.prototype.createShadow = function(node,
filled,
stroked)
Creates a shadow for the given node.
mxVmlCanvas2D.prototype.createShadowFill = function()
Creates the fill for the shadow.
mxVmlCanvas2D.prototype.createShadowStroke = function()
Creates the stroke for the shadow.
mxCellHighlight.prototype.createShape = function()
Creates and returns the highlight shape for the given state.
mxCellRenderer.prototype.createShape = function(state)
Creates the shape for the given cell state.
mxConnectionHandler.prototype.createShape = function()
Creates the preview shape for new connections.
mxRubberband.prototype.createShape = function()
Creates the rubberband selection shape.
mxHandle.prototype.createShape = function(html)
Creates and returns the shape for this handle.
mxOutline.prototype.createSizer = function()
Creates the shape used as the sizer.
mxVertexHandler.prototype.createSizer = function(cursor,
index,
size,
fillColor)
Creates a sizer handle for the specified cursor and index and returns the new mxRectangleShape that represents the handle.
mxVertexHandler.prototype.createSizerShape = function(bounds,
index,
fillColor)
Creates the shape used for the sizer handle for the specified bounds an index.
mxAbstractCanvas2D.prototype.createState = function()
Creates the state of the this canvas.
mxGraphView.prototype.createState = function(cell)
Creates and returns an mxCellState for the given cell and initializes it using mxCellRenderer.initialize.
mxVmlCanvas2D.prototype.createStroke = function()
Creates a fill for the current state.
mxSvgCanvas2D.prototype.createStyle = function(x)
Creates the optional style section.
mxGraph.prototype.createStylesheet = function()
Creates a new mxGraphSelectionModel to be used in this graph.
mxPopupMenu.prototype.createSubmenu = function(parent)
Creates the nodes required to add submenu items inside the given parent item.
mxShape.prototype.createSvg = function()
Creates and returns the SVG node(s) to represent this shape.
mxShape.prototype.createSvgCanvas = function()
Creates and returns an mxSvgCanvas2D for rendering this shape.
mxSvgCanvas2D.prototype.createSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Creates the given SVG gradient.
mxEditor.prototype.createSwimlaneLayout = function ()
Creates the layout instance used to layout the children of each swimlane.
mxEditor.prototype.createSwimlaneManager = function (graph)
Sets the graph’s container using mxGraph.init.
mxConnectionHandler.prototype.createTargetVertex = function(evt,
source)
Hook method for creating new vertices on the fly if no target was under the mouse.
mxEditor.prototype.createTasks = function (div)
Updates the contents of the given DOM node to display the tasks associated with the current editor state.
Creates the innermost element that contains the HTML text.
mxCellEditor.prototype.createTextDiv = function()
Creates the textDiv used for measuring text.
mxSvgCanvas2D.prototype.createTolerance = function(node)
Creates a hit detection tolerance shape for the given node.
mxEditor.prototype.createToolbar = function ()
Creates the toolbar with no container.
mxGraph.prototype.createTooltipHandler = function()
Creates and returns a new mxTooltipHandler to be used in this graph.
mxVmlCanvas2D.prototype.createTransparentFill = function()
Creates a transparent fill.
mxShape.prototype.createTransparentSvgRectangle = function(x,
y,
w,
h)
Adds a transparent rectangle that catches all events.
mxGraphModel.prototype.createUndoableEdit = function()
Creates a new mxUndoableEdit that implements the notify function to fire a change and notify event through the mxUndoableEdit’s source.
mxAbstractCanvas2D.prototype.createUrlConverter = function()
Create a new mxUrlConverter and returns it.
mxGraph.prototype.createVertex = function(parent,
id,
value,
x,
y,
width,
height,
style,
relative)
Hook method that creates the new vertex for insertVertex.
mxGraph.prototype.createVertexHandler = function(state)
Hooks to create a new mxVertexHandler for the given mxCellState.
mxElbowEdgeHandler.prototype.createVirtualBend = function(dblClickHandler)
Creates a virtual bend that supports double clicking and calls mxGraph.flipEdge.
mxEdgeHandler.prototype.createVirtualBends = function()
Creates and returns the bends used for modifying the edge.
mxShape.prototype.createVml = function()
Creates and returns the VML node to represent this shape.
mxShape.prototype.createVmlCanvas = function()
Creates and returns an mxVmlCanvas2D for rendering this shape.
mxVmlCanvas2D.prototype.createVmlElement = function(name)
Creates a new element using createElement and prefixes the given name with mxClient.VML_PREFIX.
mxShape.prototype.createVmlGroup = function()
Returns the temporary element used for rendering in IE8 standards mode.
mxGraphView.prototype.createVmlPane = function(width,
height)
Creates a drawing pane in VML (group).
createXmlDocument: function()
Returns a new, empty XML document.
mxHierarchicalLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxSwimlaneLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxAbstractCanvas2D.prototype.curveTo = function(x1,
y1,
x2,
y2,
x3,
y3)
Adds a bezier curve to the current path.
mxXmlCanvas2D.prototype.curveTo = function(x1,
y1,
x2,
y2,
x3,
y3)
Adds a bezier curve to the current path.
cut: function(graph,
cells)
Cuts the given array of mxCells from the specified graph.
mxEditor.prototype.cycleAttribute = function (cell)
Uses the returned value from consumeCycleAttribute as the value for the cycleAttributeName key in the given cell’s style.
mxHierarchicalLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
mxSwimlaneLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions4.html b/docs/js-api/index/Functions4.html index 9627338f2..c4a4a122a 100644 --- a/docs/js-api/index/Functions4.html +++ b/docs/js-api/index/Functions4.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 dblClick, mxGraph
 debug, mxLog
 decode
 decodeAttribute, mxObjectCodec
 decodeAttributes, mxObjectCodec
 decodeCell, mxCodec
 decodeChild
 decodeChildren, mxObjectCodec
 decodeNode, mxObjectCodec
 decodeRoot, mxModelCodec
 decodeTemplates, mxEditorCodec
 destroy
 destroyBends, mxEdgeHandler
 destroyCanvas, mxShape
 destroyFocusHighlight, mxConstraintHandler
 destroyIcons
 destroyShapes, mxGraphHandler
 dfs
 die, mxUndoableEdit
 disableContextMenu, mxEvent
 disconnect, mxChildChange
 disconnectGraph, mxGraph
 dispose, mxClient
 doResizeContainer, mxGraph
 dragEnter, mxDragSource
 dragExit, mxDragSource
 dragOver, mxDragSource
 drawCellState, mxImageExport
 drawHighlight, mxCellHighlight
 drawNode, mxStencil
 drawOverlays, mxImageExport
 drawPreview
 drawShape
 drawState, mxImageExport
 drawText, mxImageExport
 drop
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 dblClick, mxGraph
 debug, mxLog
 decode
 decodeAttribute, mxObjectCodec
 decodeAttributes, mxObjectCodec
 decodeCell, mxCodec
 decodeChild
 decodeChildren, mxObjectCodec
 decodeNode, mxObjectCodec
 decodeRoot, mxModelCodec
 decodeTemplates, mxEditorCodec
 destroy
 destroyBends, mxEdgeHandler
 destroyCanvas, mxShape
 destroyFocusHighlight, mxConstraintHandler
 destroyIcons
 destroyShapes, mxGraphHandler
 dfs
 die, mxUndoableEdit
 disableContextMenu, mxEvent
 disconnect, mxChildChange
 disconnectGraph, mxGraph
 dispose, mxClient
 doResizeContainer, mxGraph
 dragEnter, mxDragSource
 dragExit, mxDragSource
 dragOver, mxDragSource
 drawCellState, mxImageExport
 drawHighlight, mxCellHighlight
 drawNode, mxStencil
 drawOverlays, mxImageExport
 drawPreview
 drawShape
 drawState, mxImageExport
 drawText, mxImageExport
 drop
-
mxGraph.prototype.dblClick = function(evt,
cell)
Processes a doubleclick on an optional cell and fires a dblclick event.
debug: function()
Adds all arguments to the console if DEBUG is enabled.
mxCodec.prototype.decode = function(node,
into)
Decodes the given XML node.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
codec.decode = function(dec,
node,
into)
Uses the given node as the config for mxDefaultPopupMenu.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
mxObjectCodec.prototype.decode = function(dec,
node,
into)
Parses the given node into the object or returns a new object representing the given node.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
mxObjectCodec.prototype.decodeAttribute = function(dec,
attr,
obj)
Reads the given attribute into the specified object.
mxObjectCodec.prototype.decodeAttributes = function(dec,
node,
obj)
Decodes all attributes of the given node using decodeAttribute.
mxCodec.prototype.decodeCell = function(node,
restoreStructures)
Decodes cells that have been encoded using inversion, ie.
codec.decodeChild = function(dec,
child,
obj)
Overrides decode child to handle special child nodes.
codec.decodeChild = function(dec,
child,
obj)
Overrides decode child to handle special child nodes.
mxObjectCodec.prototype.decodeChild = function(dec,
child,
obj)
Reads the specified child into the given object.
mxObjectCodec.prototype.decodeChildren = function(dec,
node,
obj)
Decodec all children of the given node using decodeChild.
mxObjectCodec.prototype.decodeNode = function(dec,
node,
obj)
Calls decodeAttributes and decodeChildren for the given node.
codec.decodeRoot = function(dec,
root,
model)
Reads the cells into the graph model.
Decodes the cells from the given node as templates.
mxAutoSaveManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxCellEditor.prototype.destroy = function ()
Destroys the editor and removes all associated resources.
mxCellHighlight.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxCellMarker.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxCellRenderer.prototype.destroy = function(state)
Destroys the shapes associated with the given cell state.
mxCellState.prototype.destroy = function ()
Destroys the state and all associated resources.
mxCellTracker.prototype.destroy = function()
Destroys the object and all its resources and DOM nodes.
mxConnectionHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxConstraintHandler.prototype.destroy = function()
Destroy this handler.
mxDefaultKeyHandler.prototype.destroy = function ()
Destroys the handler associated with this object.
mxDefaultToolbar.prototype.destroy = function ()
Destroys the toolbar associated with this object and removes all installed listeners.
mxEdgeHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxEditor.prototype.destroy = function ()
Removes the editor and all its associated resources.
mxGraph.prototype.destroy = function()
Destroys the graph and all its resources.
mxGraphHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxGraphView.prototype.destroy = function()
Destroys the view and all its resources.
mxGuide.prototype.destroy = function()
Destroys all resources that this object uses.
mxKeyHandler.prototype.destroy = function()
Destroys the handler and all its references into the DOM.
mxLayoutManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxOutline.prototype.destroy = function()
Destroy this outline and removes all listeners from source.
mxPanningHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxPopupMenu.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxPopupMenuHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxRubberband.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxSelectionCellsHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxShape.prototype.destroy = function()
Destroys the shape by removing it from the DOM and releasing the DOM node associated with the shape using mxEvent.release.
mxSpaceManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxSwimlaneManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxTemporaryCellStates.prototype.destroy = function()
Returns the top, left corner as a new mxPoint.
mxToolbar.prototype.destroy = function ()
Removes the toolbar and all its associated resources.
mxTooltipHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxHandle.prototype.destroy = function()
Destroys this handle.
mxWindow.prototype.destroy = function()
Destroys the window and removes all associated resources.
mxEdgeHandler.prototype.destroyBends = function(bends)
Destroys all elements in bends.
mxShape.prototype.destroyCanvas = function(canvas)
Destroys the given canvas which was used for drawing.
mxConstraintHandler.prototype.destroyFocusHighlight = function()
Destroys the focusHighlight if one exists.
mxConnectionHandler.prototype.destroyIcons = function()
Destroys the connect icons and resets the respective state.
mxConstraintHandler.prototype.destroyIcons = function()
Destroys the focusIcons if they exist.
mxGraphHandler.prototype.destroyShapes = function()
Destroy the preview and highlight shapes.
mxCompactTreeLayout.prototype.dfs = function(cell,
parent)
Does a depth first search starting at the specified cell.
mxGraphHierarchyModel.prototype.dfs = function(parent,
root,
connectingEdge,
visitor,
seen,
layer)
Performs a depth first search on the internal hierarchy model
mxSwimlaneModel.prototype.dfs = function(parent,
root,
connectingEdge,
visitor,
seen,
layer)
Performs a depth first search on the internal hierarchy model
mxUndoableEdit.prototype.die = function()
Hook to free resources after the edit has been removed from the command history.
disableContextMenu: function()
Disables the context menu for the given element.
Disconnects the given cell recursively from its terminals and stores the previous terminal in the cell’s terminals.
mxGraph.prototype.disconnectGraph = function(cells)
Disconnects the given edges from the terminals which are not in the given array.
dispose: function()
Frees up memory in IE by resolving cyclic dependencies between the DOM and the JavaScript objects.
mxGraph.prototype.doResizeContainer = function(width,
height)
Resizes the container for the given graph width and height.
mxDragSource.prototype.dragEnter = function(graph,
evt)
Actives the given graph as a drop target.
mxDragSource.prototype.dragExit = function(graph,
evt)
Deactivates the given graph as a drop target.
mxDragSource.prototype.dragOver = function(graph,
evt)
Implements autoscroll, updates the currentPoint, highlights any drop targets and updates the preview.
mxImageExport.prototype.drawCellState = function(state,
canvas)
Draws the given state to the given canvas.
mxCellHighlight.prototype.drawHighlight = function()
Creates and returns the highlight shape for the given state.
mxStencil.prototype.drawNode = function(canvas,
shape,
node,
aspect,
disableShadow)
Draws this stencil inside the given bounds.
mxImageExport.prototype.drawOverlays = function(state,
canvas)
Draws the overlays for the given state.
mxConnectionHandler.prototype.drawPreview = function()
Redraws the preview edge using the color and width returned by getEdgeColor and getEdgeWidth.
mxEdgeHandler.prototype.drawPreview = function()
Redraws the preview.
mxVertexHandler.prototype.drawPreview = function()
Redraws the preview.
mxImageExport.prototype.drawShape = function(state,
canvas)
Draws the shape of the given state.
mxStencil.prototype.drawShape = function(canvas,
shape,
x,
y,
w,
h)
Draws this stencil inside the given bounds.
mxImageExport.prototype.drawState = function(state,
canvas)
Draws the given state and all its descendants to the given canvas.
mxImageExport.prototype.drawText = function(state,
canvas)
Draws the text of the given state.
mxDefaultToolbar.prototype.drop = function(vertex,
evt,
target)
Handles a drop from a toolbar item to the graph.
mxDragSource.prototype.drop = function(graph,
evt,
dropTarget,
x,
y)
Returns the drop target for the given graph and coordinates.
+
mxGraph.prototype.dblClick = function(evt,
cell)
Processes a doubleclick on an optional cell and fires a dblclick event.
debug: function()
Adds all arguments to the console if DEBUG is enabled.
mxCodec.prototype.decode = function(node,
into)
Decodes the given XML node.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
codec.decode = function(dec,
node,
into)
Uses the given node as the config for mxDefaultPopupMenu.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
mxObjectCodec.prototype.decode = function(dec,
node,
into)
Parses the given node into the object or returns a new object representing the given node.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
mxObjectCodec.prototype.decodeAttribute = function(dec,
attr,
obj)
Reads the given attribute into the specified object.
mxObjectCodec.prototype.decodeAttributes = function(dec,
node,
obj)
Decodes all attributes of the given node using decodeAttribute.
mxCodec.prototype.decodeCell = function(node,
restoreStructures)
Decodes cells that have been encoded using inversion, ie.
codec.decodeChild = function(dec,
child,
obj)
Overrides decode child to handle special child nodes.
codec.decodeChild = function(dec,
child,
obj)
Overrides decode child to handle special child nodes.
mxObjectCodec.prototype.decodeChild = function(dec,
child,
obj)
Reads the specified child into the given object.
mxObjectCodec.prototype.decodeChildren = function(dec,
node,
obj)
Decodec all children of the given node using decodeChild.
mxObjectCodec.prototype.decodeNode = function(dec,
node,
obj)
Calls decodeAttributes and decodeChildren for the given node.
codec.decodeRoot = function(dec,
root,
model)
Reads the cells into the graph model.
Decodes the cells from the given node as templates.
mxAutoSaveManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxCellEditor.prototype.destroy = function ()
Destroys the editor and removes all associated resources.
mxCellHighlight.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxCellMarker.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxCellRenderer.prototype.destroy = function(state)
Destroys the shapes associated with the given cell state.
mxCellState.prototype.destroy = function ()
Destroys the state and all associated resources.
mxCellTracker.prototype.destroy = function()
Destroys the object and all its resources and DOM nodes.
mxConnectionHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxConstraintHandler.prototype.destroy = function()
Destroy this handler.
mxDefaultKeyHandler.prototype.destroy = function ()
Destroys the handler associated with this object.
mxDefaultToolbar.prototype.destroy = function ()
Destroys the toolbar associated with this object and removes all installed listeners.
mxEdgeHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxEditor.prototype.destroy = function ()
Removes the editor and all its associated resources.
mxGraph.prototype.destroy = function()
Destroys the graph and all its resources.
mxGraphHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxGraphView.prototype.destroy = function()
Destroys the view and all its resources.
mxGuide.prototype.destroy = function()
Destroys all resources that this object uses.
mxKeyHandler.prototype.destroy = function()
Destroys the handler and all its references into the DOM.
mxLayoutManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxOutline.prototype.destroy = function()
Destroy this outline and removes all listeners from source.
mxPanningHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxPopupMenu.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxPopupMenuHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxRubberband.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxSelectionCellsHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxShape.prototype.destroy = function()
Destroys the shape by removing it from the DOM and releasing the DOM node associated with the shape using mxEvent.release.
mxSpaceManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxSwimlaneManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxTemporaryCellStates.prototype.destroy = function()
Returns the top, left corner as a new mxPoint.
mxToolbar.prototype.destroy = function ()
Removes the toolbar and all its associated resources.
mxTooltipHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxHandle.prototype.destroy = function()
Destroys this handle.
mxWindow.prototype.destroy = function()
Destroys the window and removes all associated resources.
mxEdgeHandler.prototype.destroyBends = function(bends)
Destroys all elements in bends.
mxShape.prototype.destroyCanvas = function(canvas)
Destroys the given canvas which was used for drawing.
mxConstraintHandler.prototype.destroyFocusHighlight = function()
Destroys the focusHighlight if one exists.
mxConnectionHandler.prototype.destroyIcons = function()
Destroys the connect icons and resets the respective state.
mxConstraintHandler.prototype.destroyIcons = function()
Destroys the focusIcons if they exist.
mxGraphHandler.prototype.destroyShapes = function()
Destroy the preview and highlight shapes.
mxCompactTreeLayout.prototype.dfs = function(cell,
parent)
Does a depth first search starting at the specified cell.
mxGraphHierarchyModel.prototype.dfs = function(parent,
root,
connectingEdge,
visitor,
seen,
layer)
Performs a depth first search on the internal hierarchy model
mxSwimlaneModel.prototype.dfs = function(parent,
root,
connectingEdge,
visitor,
seen,
layer)
Performs a depth first search on the internal hierarchy model
mxUndoableEdit.prototype.die = function()
Hook to free resources after the edit has been removed from the command history.
disableContextMenu: function()
Disables the context menu for the given element.
Disconnects the given cell recursively from its terminals and stores the previous terminal in the cell’s terminals.
mxGraph.prototype.disconnectGraph = function(cells)
Disconnects the given edges from the terminals which are not in the given array.
dispose: function()
Frees up memory in IE by resolving cyclic dependencies between the DOM and the JavaScript objects.
mxGraph.prototype.doResizeContainer = function(width,
height)
Resizes the container for the given graph width and height.
mxDragSource.prototype.dragEnter = function(graph,
evt)
Actives the given graph as a drop target.
mxDragSource.prototype.dragExit = function(graph,
evt)
Deactivates the given graph as a drop target.
mxDragSource.prototype.dragOver = function(graph,
evt)
Implements autoscroll, updates the currentPoint, highlights any drop targets and updates the preview.
mxImageExport.prototype.drawCellState = function(state,
canvas)
Draws the given state to the given canvas.
mxCellHighlight.prototype.drawHighlight = function()
Creates and returns the highlight shape for the given state.
mxStencil.prototype.drawNode = function(canvas,
shape,
node,
aspect,
disableShadow)
Draws this stencil inside the given bounds.
mxImageExport.prototype.drawOverlays = function(state,
canvas)
Draws the overlays for the given state.
mxConnectionHandler.prototype.drawPreview = function()
Redraws the preview edge using the color and width returned by getEdgeColor and getEdgeWidth.
mxEdgeHandler.prototype.drawPreview = function()
Redraws the preview.
mxVertexHandler.prototype.drawPreview = function()
Redraws the preview.
mxImageExport.prototype.drawShape = function(state,
canvas)
Draws the shape of the given state.
mxStencil.prototype.drawShape = function(canvas,
shape,
x,
y,
w,
h)
Draws this stencil inside the given bounds.
mxImageExport.prototype.drawState = function(state,
canvas)
Draws the given state and all its descendants to the given canvas.
mxImageExport.prototype.drawText = function(state,
canvas)
Draws the text of the given state.
mxDefaultToolbar.prototype.drop = function(vertex,
evt,
target)
Handles a drop from a toolbar item to the graph.
mxDragSource.prototype.drop = function(graph,
evt,
dropTarget,
x,
y)
Returns the drop target for the given graph and coordinates.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions5.html b/docs/js-api/index/Functions5.html index 8387cb3d1..93d170f7e 100644 --- a/docs/js-api/index/Functions5.html +++ b/docs/js-api/index/Functions5.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 ElbowConnector, mxEdgeStyle
 ellipse
 EllipsePerimeter, mxPerimeter
 encode
 encodeCell
 encodeObject
 encodeValue, mxObjectCodec
 end, mxAbstractCanvas2D
 endUpdate, mxGraphModel
 enter, mxLog
 enterGroup, mxGraph
 EntityRelation, mxEdgeStyle
 equalEntries, mxUtils
 equalPoints, mxUtils
 equals
 error, mxUtils
 escape
 eval, mxUtils
 evaluateAttribute, mxStencil
 evaluateTextAttribute, mxStencil
 execute
 executeLayout, mxLayoutManager
 exitGroup, mxGraph
 extend, mxUtils
 extendedDfs
 extendParent, mxGraph
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 ElbowConnector, mxEdgeStyle
 ellipse
 EllipsePerimeter, mxPerimeter
 encode
 encodeCell
 encodeObject
 encodeValue, mxObjectCodec
 end, mxAbstractCanvas2D
 endUpdate, mxGraphModel
 enter, mxLog
 enterGroup, mxGraph
 EntityRelation, mxEdgeStyle
 equalEntries, mxUtils
 equalPoints, mxUtils
 equals
 error, mxUtils
 escape
 eval, mxUtils
 evaluateAttribute, mxStencil
 evaluateTextAttribute, mxStencil
 execute
 executeLayout, mxLayoutManager
 exitGroup, mxGraph
 extend, mxUtils
 extendedDfs
 extendParent, mxGraph
-
ElbowConnector: function (state,
source,
target,
points,
result)
Uses either SideToSide or TopToBottom depending on the horizontal flag in the cell style.
mxSvgCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Sets the current path to an ellipse.
mxXmlCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Puts an ellipse into the drawing buffer.
EllipsePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes an elliptic perimeter.
mxCodec.prototype.encode = function(obj)
Encodes the specified object and returns the resulting XML node.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
view)
Encodes the given mxGraphView using encodeCell starting at the model’s root.
mxObjectCodec.prototype.encode = function(enc,
obj)
Encodes the specified object and returns a node representing then given object.
codec.encode = function(enc,
obj)
Encodes a stylesheet.
mxCodec.prototype.encodeCell = function(cell,
node,
includeChildren)
Encoding of cell hierarchies is built-into the core, but is a higher-level function that needs to be explicitely used by the respective object encoders (eg.
codec.encodeCell = function(enc,
view,
cell)
Recursively encodes the specifed cell.
codec.encodeObject = function(enc,
obj,
node)
Encodes the given mxGraphModel by writing a (flat) XML sequence of cell nodes as produced by the mxCellCodec.
mxObjectCodec.prototype.encodeObject = function(enc,
obj,
node)
Encodes the value of each member in then given obj into the given node using encodeValue.
mxObjectCodec.prototype.encodeValue = function(enc,
obj,
name,
value,
node)
Converts the given value according to the mappings and id-refs in this codec and uses writeAttribute to write the attribute into the given node.
mxAbstractCanvas2D.prototype.end = function()
Empty implementation for backwards compatibility.
mxGraphModel.prototype.endUpdate = function()
Decrements the updateLevel by one and fires an undo event if the updateLevel reaches 0.
enter: function(string)
Writes the specified string to the console if TRACE is true and returns the current time in milliseconds.
mxGraph.prototype.enterGroup = function(cell)
Uses the given cell as the root of the displayed cell hierarchy.
EntityRelation: function (state,
source,
target,
points,
result)
Implements an entity relation style for edges (as used in database schema diagrams).
equalEntries: function(a,
b)
Returns true if all entries of the given objects are equal.
equalPoints: function(a,
b)
Compares all mxPoints in the given lists.
mxGeometry.prototype.equals = function(obj)
Returns true if the given object equals this geometry.
mxPoint.prototype.equals = function(obj)
Returns true if the given object equals this point.
mxRectangle.prototype.equals = function(obj)
Returns true if the given object equals this rectangle.
error: function(message,
width,
close,
icon)
Displays the given error message in a new mxWindow of the given width.
mxGraph.prototype.escape = function(evt)
Processes an escape keystroke.
mxKeyHandler.prototype.escape = function(evt)
Hook to process ESCAPE keystrokes.
eval: function(expr)
Evaluates the given expression using eval and returns the JavaScript object that represents the expression result.
mxStencil.prototype.evaluateAttribute = function(node,
attribute,
shape)
Gets the attribute for the given name from the given node.
mxStencil.prototype.evaluateTextAttribute = function(node,
attribute,
state)
Gets the given attribute as a text.
mxCellAttributeChange.prototype.execute = function()
Changes the attribute of the cell’s user object by using mxCell.setAttribute.
mxChildChange.prototype.execute = function()
Changes the parent of child using mxGraphModel.parentForCellChanged and removes or restores the cell’s connections.
mxCircleLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxCollapseChange.prototype.execute = function()
Changes the collapsed state of cell to previous using mxGraphModel.collapsedStateForCellChanged.
mxCompactTreeLayout.prototype.execute = function(parent,
root)
Implements mxGraphLayout.execute.
mxCompositeLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute by executing all layouts in a single transaction.
mxCoordinateAssignment.prototype.execute = function(parent)
A basic horizontal coordinate assignment algorithm
mxCurrentRootChange.prototype.execute = function()
Changes the current root of the view.
mxEdgeLabelLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxEditor.prototype.execute = function (actionname,
cell,
evt)
Executes the function with the given name in actions passing the editor instance and given cell as the first and second argument.
mxFastOrganicLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxGeometryChange.prototype.execute = function()
Changes the geometry of cell ro previous using mxGraphModel.geometryForCellChanged.
mxGraphLayout.prototype.execute = function(parent)
Executes the layout algorithm for the children of the given parent.
mxGraphModel.prototype.execute = function(change)
Executes the given edit and fires events if required.
mxHierarchicalLayout.prototype.execute = function(parent,
roots)
Executes the layout for the children of the specified parent.
mxHierarchicalLayoutStage.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxMedianHybridCrossingReduction.prototype.execute = function(parent)
Performs a vertex ordering within ranks as described by Gansner et al 1993
mxMinimumCycleRemover.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxParallelEdgeLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxPartitionLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxRadialTreeLayout.prototype.execute = function(parent,
root)
Implements mxGraphLayout.execute.
mxRootChange.prototype.execute = function()
Carries out a change of the root using mxGraphModel.rootChanged.
mxSelectionChange.prototype.execute = function()
Changes the current root of the view.
mxStackLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxStyleChange.prototype.execute = function()
Changes the style of cell to previous using mxGraphModel.styleForCellChanged.
mxSwimlaneLayout.prototype.execute = function(parent,
swimlanes)
Executes the layout for the children of the specified parent.
mxSwimlaneOrdering.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxTerminalChange.prototype.execute = function()
Changes the terminal of cell to previous using mxGraphModel.terminalForCellChanged.
mxValueChange.prototype.execute = function()
Changes the value of cell to previous using mxGraphModel.valueForCellChanged.
mxHandle.prototype.execute = function()
Hook for subclassers to execute the handle.
mxVisibleChange.prototype.execute = function()
Changes the visible state of cell to previous using mxGraphModel.visibleStateForCellChanged.
mxLayoutManager.prototype.executeLayout = function(layout,
parent)
Executes the given layout on the given parent.
mxGraph.prototype.exitGroup = function()
Changes the current root to the next valid root in the displayed cell hierarchy.
extend: function(ctor,
superCtor)
Assigns a copy of the superclass prototype to the subclass prototype.
mxGraphHierarchyModel.prototype.extendedDfs = function(parent,
root,
connectingEdge,
visitor,
seen,
ancestors,
childHash,
layer)
Performs a depth first search on the internal hierarchy model.
mxSwimlaneModel.prototype.extendedDfs = function(parent,
root,
connectingEdge,
visitor,
seen,
ancestors,
childHash,
layer)
Performs a depth first search on the internal hierarchy model.
mxGraph.prototype.extendParent = function(cell)
Resizes the parents recursively so that they contain the complete area of the resized child cell.
+
ElbowConnector: function (state,
source,
target,
points,
result)
Uses either SideToSide or TopToBottom depending on the horizontal flag in the cell style.
mxSvgCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Sets the current path to an ellipse.
mxXmlCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Puts an ellipse into the drawing buffer.
EllipsePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes an elliptic perimeter.
mxCodec.prototype.encode = function(obj)
Encodes the specified object and returns the resulting XML node.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
view)
Encodes the given mxGraphView using encodeCell starting at the model’s root.
mxObjectCodec.prototype.encode = function(enc,
obj)
Encodes the specified object and returns a node representing then given object.
codec.encode = function(enc,
obj)
Encodes a stylesheet.
mxCodec.prototype.encodeCell = function(cell,
node,
includeChildren)
Encoding of cell hierarchies is built-into the core, but is a higher-level function that needs to be explicitely used by the respective object encoders (eg.
codec.encodeCell = function(enc,
view,
cell)
Recursively encodes the specifed cell.
codec.encodeObject = function(enc,
obj,
node)
Encodes the given mxGraphModel by writing a (flat) XML sequence of cell nodes as produced by the mxCellCodec.
mxObjectCodec.prototype.encodeObject = function(enc,
obj,
node)
Encodes the value of each member in then given obj into the given node using encodeValue.
mxObjectCodec.prototype.encodeValue = function(enc,
obj,
name,
value,
node)
Converts the given value according to the mappings and id-refs in this codec and uses writeAttribute to write the attribute into the given node.
mxAbstractCanvas2D.prototype.end = function()
Empty implementation for backwards compatibility.
mxGraphModel.prototype.endUpdate = function()
Decrements the updateLevel by one and fires an undo event if the updateLevel reaches 0.
enter: function(string)
Writes the specified string to the console if TRACE is true and returns the current time in milliseconds.
mxGraph.prototype.enterGroup = function(cell)
Uses the given cell as the root of the displayed cell hierarchy.
EntityRelation: function (state,
source,
target,
points,
result)
Implements an entity relation style for edges (as used in database schema diagrams).
equalEntries: function(a,
b)
Returns true if all entries of the given objects are equal.
equalPoints: function(a,
b)
Compares all mxPoints in the given lists.
mxGeometry.prototype.equals = function(obj)
Returns true if the given object equals this geometry.
mxPoint.prototype.equals = function(obj)
Returns true if the given object equals this point.
mxRectangle.prototype.equals = function(obj)
Returns true if the given object equals this rectangle.
error: function(message,
width,
close,
icon)
Displays the given error message in a new mxWindow of the given width.
mxGraph.prototype.escape = function(evt)
Processes an escape keystroke.
mxKeyHandler.prototype.escape = function(evt)
Hook to process ESCAPE keystrokes.
eval: function(expr)
Evaluates the given expression using eval and returns the JavaScript object that represents the expression result.
mxStencil.prototype.evaluateAttribute = function(node,
attribute,
shape)
Gets the attribute for the given name from the given node.
mxStencil.prototype.evaluateTextAttribute = function(node,
attribute,
state)
Gets the given attribute as a text.
mxCellAttributeChange.prototype.execute = function()
Changes the attribute of the cell’s user object by using mxCell.setAttribute.
mxChildChange.prototype.execute = function()
Changes the parent of child using mxGraphModel.parentForCellChanged and removes or restores the cell’s connections.
mxCircleLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxCollapseChange.prototype.execute = function()
Changes the collapsed state of cell to previous using mxGraphModel.collapsedStateForCellChanged.
mxCompactTreeLayout.prototype.execute = function(parent,
root)
Implements mxGraphLayout.execute.
mxCompositeLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute by executing all layouts in a single transaction.
mxCoordinateAssignment.prototype.execute = function(parent)
A basic horizontal coordinate assignment algorithm
mxCurrentRootChange.prototype.execute = function()
Changes the current root of the view.
mxEdgeLabelLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxEditor.prototype.execute = function (actionname,
cell,
evt)
Executes the function with the given name in actions passing the editor instance and given cell as the first and second argument.
mxFastOrganicLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxGeometryChange.prototype.execute = function()
Changes the geometry of cell ro previous using mxGraphModel.geometryForCellChanged.
mxGraphLayout.prototype.execute = function(parent)
Executes the layout algorithm for the children of the given parent.
mxGraphModel.prototype.execute = function(change)
Executes the given edit and fires events if required.
mxHierarchicalLayout.prototype.execute = function(parent,
roots)
Executes the layout for the children of the specified parent.
mxHierarchicalLayoutStage.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxMedianHybridCrossingReduction.prototype.execute = function(parent)
Performs a vertex ordering within ranks as described by Gansner et al 1993
mxMinimumCycleRemover.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxParallelEdgeLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxPartitionLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxRadialTreeLayout.prototype.execute = function(parent,
root)
Implements mxGraphLayout.execute.
mxRootChange.prototype.execute = function()
Carries out a change of the root using mxGraphModel.rootChanged.
mxSelectionChange.prototype.execute = function()
Changes the current root of the view.
mxStackLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxStyleChange.prototype.execute = function()
Changes the style of cell to previous using mxGraphModel.styleForCellChanged.
mxSwimlaneLayout.prototype.execute = function(parent,
swimlanes)
Executes the layout for the children of the specified parent.
mxSwimlaneOrdering.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxTerminalChange.prototype.execute = function()
Changes the terminal of cell to previous using mxGraphModel.terminalForCellChanged.
mxValueChange.prototype.execute = function()
Changes the value of cell to previous using mxGraphModel.valueForCellChanged.
mxHandle.prototype.execute = function()
Hook for subclassers to execute the handle.
mxVisibleChange.prototype.execute = function()
Changes the visible state of cell to previous using mxGraphModel.visibleStateForCellChanged.
mxLayoutManager.prototype.executeLayout = function(layout,
parent)
Executes the given layout on the given parent.
mxGraph.prototype.exitGroup = function()
Changes the current root to the next valid root in the displayed cell hierarchy.
extend: function(ctor,
superCtor)
Assigns a copy of the superclass prototype to the subclass prototype.
mxGraphHierarchyModel.prototype.extendedDfs = function(parent,
root,
connectingEdge,
visitor,
seen,
ancestors,
childHash,
layer)
Performs a depth first search on the internal hierarchy model.
mxSwimlaneModel.prototype.extendedDfs = function(parent,
root,
connectingEdge,
visitor,
seen,
ancestors,
childHash,
layer)
Performs a depth first search on the internal hierarchy model.
mxGraph.prototype.extendParent = function(cell)
Resizes the parents recursively so that they contain the complete area of the resized child cell.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions6.html b/docs/js-api/index/Functions6.html index feae161f4..4ea59b36c 100644 --- a/docs/js-api/index/Functions6.html +++ b/docs/js-api/index/Functions6.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
F
 fadeOut
 fill
 fillAndStroke
 filterCells, mxGraphModel
 filterDescendants
 findNearestSegment, mxUtils
 findNode, mxUtils
 findNodeByAttribute, mxUtils
 findParallels, mxParallelEdgeLayout
 findRankHeights, mxCompactTreeLayout
 findRoots
 findTreeRoots, mxGraph
 fireEvent, mxEventSource
 fireGestureEvent, mxGraph
 fireMouseEvent, mxGraph
 fit
 fixRanks
 flipEdge, mxGraph
 flipPoint, mxVertexHandler
 focusLost, mxCellEditor
 foldCells, mxGraph
 format
 fromRectangle, mxRectangle
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
F
 fadeOut
 fill
 fillAndStroke
 filterCells, mxGraphModel
 filterDescendants
 findNearestSegment, mxUtils
 findNode, mxUtils
 findNodeByAttribute, mxUtils
 findParallels, mxParallelEdgeLayout
 findRankHeights, mxCompactTreeLayout
 findRoots
 findTreeRoots, mxGraph
 fireEvent, mxEventSource
 fireGestureEvent, mxGraph
 fireMouseEvent, mxGraph
 fit
 fixRanks
 flipEdge, mxGraph
 flipPoint, mxVertexHandler
 focusLost, mxCellEditor
 foldCells, mxGraph
 format
 fromRectangle, mxRectangle
-
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
Asynchronous fade-out operation.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
See mxEffects.fadeOut.
mxSvgCanvas2D.prototype.fill = function()
Fills the current path.
mxVmlCanvas2D.prototype.fill = function()
Fills the current path.
mxXmlCanvas2D.prototype.fill = function()
Fills the current drawing buffer.
mxSvgCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
mxVmlCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
mxXmlCanvas2D.prototype.fillAndStroke = function()
Fills the current drawing buffer and its outline.
mxGraphModel.prototype.filterCells = function(cells,
filter)
Returns the cells from the given array where the fiven filter function returns true.
mxGraphModel.prototype.filterDescendants = function(filter,
parent)
Visits all cells recursively and applies the specified filter function to each cell.
mxHierarchicalLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
mxSwimlaneLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
findNearestSegment: function(state,
x,
y)
Finds the index of the nearest segment on the given cell state for the specified coordinate pair.
findNode: function(node,
attr,
value)
Returns the first node where attr equals value.
findNodeByAttribute: function()
Returns the first node where the given attribute matches the given value.
mxParallelEdgeLayout.prototype.findParallels = function(parent)
Finds the parallel edges in the given parent.
mxCompactTreeLayout.prototype.findRankHeights = function(node,
rank)
Stores the maximum height (relative to the layout direction) of cells in each rank
mxHierarchicalLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxSwimlaneLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxGraph.prototype.findTreeRoots = function(parent,
isolate,
invert)
Returns all children in the given parent which do not have incoming edges.
mxEventSource.prototype.fireEvent = function(evt,
sender)
Dispatches the given event to the listeners which are registered for the event.
mxGraph.prototype.fireGestureEvent = function(evt,
cell)
Dispatches a mxEvent.GESTURE event.
mxGraph.prototype.fireMouseEvent = function(evtName,
me,
sender)
Dispatches the given event in the graph event dispatch loop.
mxGraph.prototype.fit = function(border,
keepOrigin)
Scales the graph such that the complete diagram fits into container and returns the current scale in the view.
fit: function(node)
Makes sure the given node is inside the visible area of the window.
mxWindow.prototype.fit = function()
Makes sure the window is inside the client area of the window.
mxGraphHierarchyModel.prototype.fixRanks = function()
Fixes the layer assignments to the values stored in the nodes.
mxSwimlaneModel.prototype.fixRanks = function()
Fixes the layer assignments to the values stored in the nodes.
mxGraph.prototype.flipEdge = function(edge)
Toggles the style of the given edge between null (or empty) and alternateEdgeStyle.
mxHandle.prototype.flipPoint = function(pt)
Flips the given point vertically and/or horizontally.
mxCellEditor.prototype.focusLost = function()
Called if the textarea has lost focus.
mxGraph.prototype.foldCells = function(collapse,
recurse,
cells,
checkFoldable)
Sets the collapsed state of the specified cells and all descendants if recurse is true.
mxAbstractCanvas2D.prototype.format = function(value)
Rounds all numbers to integers.
mxSvgCanvas2D.prototype.format = function(value)
Rounds all numbers to 2 decimal points.
mxXmlCanvas2D.prototype.format = function(value)
Returns a formatted number with 2 decimal places.
mxRectangle.fromRectangle = function(rect)
Returns a new mxRectangle which is a copy of the given rectangle.
+
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
Asynchronous fade-out operation.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
See mxEffects.fadeOut.
mxSvgCanvas2D.prototype.fill = function()
Fills the current path.
mxVmlCanvas2D.prototype.fill = function()
Fills the current path.
mxXmlCanvas2D.prototype.fill = function()
Fills the current drawing buffer.
mxSvgCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
mxVmlCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
mxXmlCanvas2D.prototype.fillAndStroke = function()
Fills the current drawing buffer and its outline.
mxGraphModel.prototype.filterCells = function(cells,
filter)
Returns the cells from the given array where the fiven filter function returns true.
mxGraphModel.prototype.filterDescendants = function(filter,
parent)
Visits all cells recursively and applies the specified filter function to each cell.
mxHierarchicalLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
mxSwimlaneLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
findNearestSegment: function(state,
x,
y)
Finds the index of the nearest segment on the given cell state for the specified coordinate pair.
findNode: function(node,
attr,
value)
Returns the first node where attr equals value.
findNodeByAttribute: function()
Returns the first node where the given attribute matches the given value.
mxParallelEdgeLayout.prototype.findParallels = function(parent)
Finds the parallel edges in the given parent.
mxCompactTreeLayout.prototype.findRankHeights = function(node,
rank)
Stores the maximum height (relative to the layout direction) of cells in each rank
mxHierarchicalLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxSwimlaneLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxGraph.prototype.findTreeRoots = function(parent,
isolate,
invert)
Returns all children in the given parent which do not have incoming edges.
mxEventSource.prototype.fireEvent = function(evt,
sender)
Dispatches the given event to the listeners which are registered for the event.
mxGraph.prototype.fireGestureEvent = function(evt,
cell)
Dispatches a mxEvent.GESTURE event.
mxGraph.prototype.fireMouseEvent = function(evtName,
me,
sender)
Dispatches the given event in the graph event dispatch loop.
mxGraph.prototype.fit = function(border,
keepOrigin)
Scales the graph such that the complete diagram fits into container and returns the current scale in the view.
fit: function(node)
Makes sure the given node is inside the visible area of the window.
mxWindow.prototype.fit = function()
Makes sure the window is inside the client area of the window.
mxGraphHierarchyModel.prototype.fixRanks = function()
Fixes the layer assignments to the values stored in the nodes.
mxSwimlaneModel.prototype.fixRanks = function()
Fixes the layer assignments to the values stored in the nodes.
mxGraph.prototype.flipEdge = function(edge)
Toggles the style of the given edge between null (or empty) and alternateEdgeStyle.
mxHandle.prototype.flipPoint = function(pt)
Flips the given point vertically and/or horizontally.
mxCellEditor.prototype.focusLost = function()
Called if the textarea has lost focus.
mxGraph.prototype.foldCells = function(collapse,
recurse,
cells,
checkFoldable)
Sets the collapsed state of the specified cells and all descendants if recurse is true.
mxAbstractCanvas2D.prototype.format = function(value)
Rounds all numbers to integers.
mxSvgCanvas2D.prototype.format = function(value)
Rounds all numbers to 2 decimal points.
mxXmlCanvas2D.prototype.format = function(value)
Returns a formatted number with 2 decimal places.
mxRectangle.fromRectangle = function(rect)
Returns a new mxRectangle which is a copy of the given rectangle.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions7.html b/docs/js-api/index/Functions7.html index 948ca1169..8fd3516f8 100644 --- a/docs/js-api/index/Functions7.html +++ b/docs/js-api/index/Functions7.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 geometryForCellChanged, mxGraphModel
 get
 getAlignmentAsPoint, mxUtils
 getAlignmentTolerance, mxConnectionHandler
 getAllConnectionConstraints, mxGraph
 getAllEdges, mxGraph
 getAlternateContent, mxSvgCanvas2D
 getAppendices, mxPrintPreview
 getArcSize
 getAttribute, mxCell
 getAttributeName, mxObjectCodec
 getBackgroundImage, mxGraph
 getBackgroundPageBounds, mxGraphView
 getBackgroundPane, mxGraphView
 getBaseDomain, mxUrlConverter
 getBaseUrl
 getBorder, mxGraph
 getBorderSizes, mxGraph
 getBoundingBox
 getBoundingBoxFromGeometry, mxGraph
 getBounds
 getBoundsForGroup, mxGraph
 getCanvas, mxGraphView
 getCell
 getCellAt
 getCellBounds
 getCellContainmentArea, mxGraph
 getCellForPopupEvent, mxPopupMenuHandler
 getCellGeometry, mxGraph
 getCellOverlays, mxGraph
 getCells
 getCellsBeyond, mxGraph
 getCellsForChange, mxLayoutManager
 getCellsForEdit, mxLayoutManager
 getCellsForGroup, mxGraph
 getCellStates, mxGraphView
 getCellsToShift, mxSpaceManager
 getCellStyle
 getCellValidationError, mxGraph
 getCenterX, mxRectangle
 getCenterY, mxRectangle
 getChildAt
 getChildCells
 getChildCount
 getChildEdges
 getChildNodes, mxUtils
 getChildOffsetForCell, mxGraph
 getChildren, mxGraphModel
 getChildVertices
 getClientX, mxEvent
 getClientY, mxEvent
 getCloneableCells, mxGraph
 getCodec, mxCodecRegistry
 getColor, mxUtils
 getConnectImage, mxConnectionHandler
 getConnectionConstraint, mxGraph
 getConnectionPoint, mxGraph
 getConnections
 getConstraint, mxGraphLayout
 getControlBounds, mxCellRenderer
 getCoreCell
 getCoverPages, mxPrintPreview
 getCurrentHtmlValue, mxCellEditor
 getCurrentPoints
 getCurrentRoot, mxGraph
 getCurrentStrokeWidth, mxSvgCanvas2D
 getCurrentStyle, mxUtils
 getCurrentValue, mxCellEditor
 getCursor, mxShape
 getCursorForBend, mxElbowEdgeHandler
 getCursorForCell, mxGraph
 getCursorForMouseEvent, mxGraph
 getDecoratorPane, mxGraphView
 getDefaultBundle, mxResources
 getDefaultEdgeStyle, mxStylesheet
 getDefaultParent, mxGraph
 getDefaultVertexStyle, mxStylesheet
 getDeletableCells, mxGraph
 getDelta
 getDescendants, mxGraphModel
 getDirectedEdgeCount, mxGraphModel
 getDocType, mxPrintPreview
 getDocumentElement, mxXmlRequest
 getDocumentHeight, mxDivResizer
 getDocumentScrollOrigin, mxUtils
 getDocumentWidth, mxDivResizer
 getDrawPane, mxGraphView
 getDropTarget
 getEdgeAt
 getEdgeColor, mxConnectionHandler
 getEdgeCount
 getEdgeId, mxParallelEdgeLayout
 getEdgeIndex, mxCell
 getEdges
 getEdgesBetween
 getEdgeStyle
 getEdgeValidationError, mxGraph
 getEdgeWidth, mxConnectionHandler
 getEditingCell, mxCellEditor
 getEditingValue, mxGraph
 getEditorBounds, mxCellEditor
 getElement, mxWindow
 getElementById, mxCodec
 getEmptyBounds, mxGraphView
 getEmptyLabelText, mxCellEditor
 getEvent, mxMouseEvent
 getEventSource, mxEventSource
 getExportableCells, mxGraph
 getFieldName, mxObjectCodec
 getFieldTemplate, mxObjectCodec
 getFirstSelectableCell, mxGraphSelectionModel
 getFoldableCells, mxGraph
 getFoldingImage, mxGraph
 getFunction, mxKeyHandler
 getFunctionName, mxUtils
 getGeneralPurposeVariable
 getGeometry
 getGradientBounds
 getGraph
 getGraphBounds
 getGraphForEvent, mxDragSource
 getGraphX, mxMouseEvent
 getGraphY, mxMouseEvent
 getGridSize, mxGraph
 getGuideStates, mxGraphHandler
 getGuideTolerance, mxGuide
 getHandleFillColor, mxEdgeHandler
 getHandleForEvent
 getHandler, mxSelectionCellsHandler
 getHotspot, mxCellMarker
 getId
 getImage
 getImageBounds
 getImageForConstraint, mxConstraintHandler
 getImageFromBundles, mxGraph
 getImportableCells, mxGraph
 getIncomingEdges
 getIndex, mxCell
 getIndicatorBounds, mxLabel
 getIndicatorColor, mxGraph
 getIndicatorGradientColor, mxGraph
 getIndicatorImage, mxGraph
 getIndicatorShape, mxGraph
 getInitialCellForEvent, mxGraphHandler
 getInitialValue, mxCellEditor
 getInnerHtml, mxUtils
 getKeys, mxDictionary
 getLabel, mxGraph
 getLabelBounds
 getLabelValue, mxCellRenderer
 getLayout, mxLayoutManager
 getLinkForCellState, mxImageExport
 getMainEvent, mxEvent
 getMargin, mxText
 getMarkedState, mxCellMarker
 getMarkerColor, mxCellMarker
 getMaximumGraphBounds, mxGraph
 getMinimumSize
 getModel
 getMovableCells, mxGraph
 getName
 getNearestCommonAncestor, mxGraphModel
 getNextLayerConnectedCells
 getNextPoint, mxGraphView
 getNumber, mxUtils
 getObject, mxCodec
 getOffset, mxUtils
 getOpposites
 getOrigin, mxGraphModel
 getOriginForCell, mxMorphing
 getOuterHtml, mxUtils
 getOutgoingEdges
 getOutlineConstraint, mxGraph
 getOutlineOffset, mxOutline
 getOverlap, mxGraph
 getOverlayPane, mxGraphView
 getPaintBounds, mxCellState
 getParent
 getParentOffset, mxGraphLayout
 getParentPath, mxCellPath
 getParents, mxGraphModel
 getParentSize, mxStackLayout
 getPerimeterBounds
 getPerimeterFunction, mxGraphView
 getPerimeterPoint, mxGraphView
 getPoint
 getPointForEvent
 getPosition, mxVertexHandler
 getPreferredPageSize, mxGraph
 getPreferredSizeForCell, mxGraph
 getPrettyXML, mxUtils
 getPreviewBounds, mxGraphHandler
 getPreviewPoints
 getPreviewTerminalState, mxEdgeHandler
 getPreviousLayerConnectedCells
 getProperties, mxEventObject
 getProperty, mxEventObject
 getRadius, mxCircleLayout
 getRankValue, mxGraphHierarchyNode
 getRelativePoint, mxGraphView
 getRemovedCellsForChanges, mxGraph
 getRoot
 getRootTitle, mxEditor
 getRotatedPoint, mxUtils
 getRotation
 getRoutingCenterX, mxGraphView
 getRoutingCenterY, mxGraphView
 getScale, mxGraphView
 getScaleForPageCount, mxUtils
 getScrollOrigin, mxUtils
 getSelectionBounds, mxVertexHandler
 getSelectionCell, mxGraph
 getSelectionCells, mxGraph
 getSelectionCellsForChanges, mxGraph
 getSelectionColor
 getSelectionCount, mxGraph
 getSelectionModel, mxGraph
 getSelectionPoints, mxEdgeHandler
 getSelectionStrokeWidth
 getShape, mxCellRenderer
 getShapeConstructor, mxCellRenderer
 getShapeRotation
 getShapesForState, mxCellRenderer
 getSizeForString, mxUtils
 getSnapToTerminalTolerance, mxEdgeHandler
 getSource
 getSourceContainerSize, mxOutline
 getSourcePerimeterPoint, mxConnectionHandler
 getSpacing, mxText
 getSpecialBundle, mxResources
 getStartSize, mxGraph
 getState
 getStateForEvent, mxGraph
 getStates, mxGraphView
 getStateToMark, mxCellMarker
 getStatus, mxXmlRequest
 getStencil, mxStencilRegistry
 getStringValue, mxStylesheetCodec
 getStyle
 getStylename, mxUtils
 getStylenames, mxUtils
 getStylesheet, mxGraph
 getSvgGradient, mxSvgCanvas2D
 getSvgScreenOffset
 getSwimlane, mxGraph
 getSwimlaneAt, mxGraph
 getTable, mxForm
 getTargetPerimeterPoint, mxConnectionHandler
 getTemplate, mxEditor
 getTerminal
 getTerminalForPort, mxGraph
 getTerminalPoint, mxGeometry
 getTerminalPort, mxGraphView
 getText, mxXmlRequest
 getTextContent, mxUtils
 getTextRotation
 getTextScale, mxCellRenderer
 getTitle, mxEditor
 getTolerance
 getTooltip, mxGraph
 getTooltipForCell, mxGraph
 getTooltipForNode
 getTopmostCells, mxGraphModel
 getTotalRotation, mxVertexHandler
 getTranslate, mxGraphView
 getTranslateForEvent, mxOutline
 getTranslateForRoot, mxGraph
 getUrlImage, mxEditor
 getUrlPost, mxEditor
 getValidState, mxCellMarker
 getValue
 getValues, mxDictionary
 getVertexBounds, mxGraphLayout
 getVerticalAlign, mxGraph
 getView, mxGraph
 getViewXml, mxUtils
 getVisibleTerminal
 getVisibleTerminalState, mxCellState
 getVmlDashPattern, mxVmlCanvas2D
 getWindow, mxPrintPreview
 getX
 getXml
 getY
 graphContainsEvent, mxDragSource
 graphModelChanged
 graphRenderHint, mxOutline
 groupCells
 grow, mxRectangle
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 geometryForCellChanged, mxGraphModel
 get
 getAlignmentAsPoint, mxUtils
 getAlignmentTolerance, mxConnectionHandler
 getAllConnectionConstraints, mxGraph
 getAllEdges, mxGraph
 getAlternateContent, mxSvgCanvas2D
 getAppendices, mxPrintPreview
 getArcSize
 getAttribute, mxCell
 getAttributeName, mxObjectCodec
 getBackgroundImage, mxGraph
 getBackgroundPageBounds, mxGraphView
 getBackgroundPane, mxGraphView
 getBaseDomain, mxUrlConverter
 getBaseUrl
 getBorder, mxGraph
 getBorderSizes, mxGraph
 getBoundingBox
 getBoundingBoxFromGeometry, mxGraph
 getBounds
 getBoundsForGroup, mxGraph
 getCanvas, mxGraphView
 getCell
 getCellAt
 getCellBounds
 getCellContainmentArea, mxGraph
 getCellForPopupEvent, mxPopupMenuHandler
 getCellGeometry, mxGraph
 getCellOverlays, mxGraph
 getCells
 getCellsBeyond, mxGraph
 getCellsForChange, mxLayoutManager
 getCellsForEdit, mxLayoutManager
 getCellsForGroup, mxGraph
 getCellStates, mxGraphView
 getCellsToShift, mxSpaceManager
 getCellStyle
 getCellValidationError, mxGraph
 getCenterX, mxRectangle
 getCenterY, mxRectangle
 getChildAt
 getChildCells
 getChildCount
 getChildEdges
 getChildNodes, mxUtils
 getChildOffsetForCell, mxGraph
 getChildren, mxGraphModel
 getChildVertices
 getClientX, mxEvent
 getClientY, mxEvent
 getCloneableCells, mxGraph
 getCodec, mxCodecRegistry
 getColor, mxUtils
 getConnectImage, mxConnectionHandler
 getConnectionConstraint, mxGraph
 getConnectionPoint, mxGraph
 getConnections
 getConstraint, mxGraphLayout
 getControlBounds, mxCellRenderer
 getCoreCell
 getCoverPages, mxPrintPreview
 getCurrentHtmlValue, mxCellEditor
 getCurrentPoints
 getCurrentRoot, mxGraph
 getCurrentStrokeWidth, mxSvgCanvas2D
 getCurrentStyle, mxUtils
 getCurrentValue, mxCellEditor
 getCursor, mxShape
 getCursorForBend, mxElbowEdgeHandler
 getCursorForCell, mxGraph
 getCursorForMouseEvent, mxGraph
 getDecoratorPane, mxGraphView
 getDefaultBundle, mxResources
 getDefaultEdgeStyle, mxStylesheet
 getDefaultParent, mxGraph
 getDefaultVertexStyle, mxStylesheet
 getDeletableCells, mxGraph
 getDelta
 getDescendants, mxGraphModel
 getDirectedEdgeCount, mxGraphModel
 getDocType, mxPrintPreview
 getDocumentElement, mxXmlRequest
 getDocumentHeight, mxDivResizer
 getDocumentScrollOrigin, mxUtils
 getDocumentWidth, mxDivResizer
 getDrawPane, mxGraphView
 getDropTarget
 getEdgeAt
 getEdgeColor, mxConnectionHandler
 getEdgeCount
 getEdgeId, mxParallelEdgeLayout
 getEdgeIndex, mxCell
 getEdges
 getEdgesBetween
 getEdgeStyle
 getEdgeValidationError, mxGraph
 getEdgeWidth, mxConnectionHandler
 getEditingCell, mxCellEditor
 getEditingValue, mxGraph
 getEditorBounds, mxCellEditor
 getElement, mxWindow
 getElementById, mxCodec
 getEmptyBounds, mxGraphView
 getEmptyLabelText, mxCellEditor
 getEvent, mxMouseEvent
 getEventSource, mxEventSource
 getExportableCells, mxGraph
 getFieldName, mxObjectCodec
 getFieldTemplate, mxObjectCodec
 getFirstSelectableCell, mxGraphSelectionModel
 getFoldableCells, mxGraph
 getFoldingImage, mxGraph
 getFunction, mxKeyHandler
 getFunctionName, mxUtils
 getGeneralPurposeVariable
 getGeometry
 getGradientBounds
 getGraph
 getGraphBounds
 getGraphForEvent, mxDragSource
 getGraphX, mxMouseEvent
 getGraphY, mxMouseEvent
 getGridSize, mxGraph
 getGuideStates, mxGraphHandler
 getGuideTolerance, mxGuide
 getHandleFillColor, mxEdgeHandler
 getHandleForEvent
 getHandler, mxSelectionCellsHandler
 getHotspot, mxCellMarker
 getId
 getImage
 getImageBounds
 getImageForConstraint, mxConstraintHandler
 getImageFromBundles, mxGraph
 getImportableCells, mxGraph
 getIncomingEdges
 getIndex, mxCell
 getIndicatorBounds, mxLabel
 getIndicatorColor, mxGraph
 getIndicatorGradientColor, mxGraph
 getIndicatorImage, mxGraph
 getIndicatorShape, mxGraph
 getInitialCellForEvent, mxGraphHandler
 getInitialValue, mxCellEditor
 getInnerHtml, mxUtils
 getKeys, mxDictionary
 getLabel, mxGraph
 getLabelBounds
 getLabelValue, mxCellRenderer
 getLayout, mxLayoutManager
 getLinkForCellState, mxImageExport
 getMainEvent, mxEvent
 getMargin, mxText
 getMarkedState, mxCellMarker
 getMarkerColor, mxCellMarker
 getMaximumGraphBounds, mxGraph
 getMinimumSize
 getModel
 getMovableCells, mxGraph
 getName
 getNearestCommonAncestor, mxGraphModel
 getNextLayerConnectedCells
 getNextPoint, mxGraphView
 getNumber, mxUtils
 getObject, mxCodec
 getOffset, mxUtils
 getOpposites
 getOrigin, mxGraphModel
 getOriginForCell, mxMorphing
 getOuterHtml, mxUtils
 getOutgoingEdges
 getOutlineConstraint, mxGraph
 getOutlineOffset, mxOutline
 getOverlap, mxGraph
 getOverlayPane, mxGraphView
 getPaintBounds, mxCellState
 getParent
 getParentOffset, mxGraphLayout
 getParentPath, mxCellPath
 getParents, mxGraphModel
 getParentSize, mxStackLayout
 getPerimeterBounds
 getPerimeterFunction, mxGraphView
 getPerimeterPoint, mxGraphView
 getPoint
 getPointForEvent
 getPosition, mxVertexHandler
 getPreferredPageSize, mxGraph
 getPreferredSizeForCell, mxGraph
 getPrettyXML, mxUtils
 getPreviewBounds, mxGraphHandler
 getPreviewPoints
 getPreviewTerminalState, mxEdgeHandler
 getPreviousLayerConnectedCells
 getProperties, mxEventObject
 getProperty, mxEventObject
 getRadius, mxCircleLayout
 getRankValue, mxGraphHierarchyNode
 getRelativePoint, mxGraphView
 getRemovedCellsForChanges, mxGraph
 getRoot
 getRootTitle, mxEditor
 getRotatedPoint, mxUtils
 getRotation
 getRoutingCenterX, mxGraphView
 getRoutingCenterY, mxGraphView
 getScale, mxGraphView
 getScaleForPageCount, mxUtils
 getScrollOrigin, mxUtils
 getSelectionBounds, mxVertexHandler
 getSelectionCell, mxGraph
 getSelectionCells, mxGraph
 getSelectionCellsForChanges, mxGraph
 getSelectionColor
 getSelectionCount, mxGraph
 getSelectionModel, mxGraph
 getSelectionPoints, mxEdgeHandler
 getSelectionStrokeWidth
 getShape, mxCellRenderer
 getShapeConstructor, mxCellRenderer
 getShapeRotation
 getShapesForState, mxCellRenderer
 getSizeForString, mxUtils
 getSnapToTerminalTolerance, mxEdgeHandler
 getSource
 getSourceContainerSize, mxOutline
 getSourcePerimeterPoint, mxConnectionHandler
 getSpacing, mxText
 getSpecialBundle, mxResources
 getStartSize, mxGraph
 getState
 getStateForEvent, mxGraph
 getStates, mxGraphView
 getStateToMark, mxCellMarker
 getStatus, mxXmlRequest
 getStencil, mxStencilRegistry
 getStringValue, mxStylesheetCodec
 getStyle
 getStylename, mxUtils
 getStylenames, mxUtils
 getStylesheet, mxGraph
 getSvgGradient, mxSvgCanvas2D
 getSvgScreenOffset
 getSwimlane, mxGraph
 getSwimlaneAt, mxGraph
 getTable, mxForm
 getTargetPerimeterPoint, mxConnectionHandler
 getTemplate, mxEditor
 getTerminal
 getTerminalForPort, mxGraph
 getTerminalPoint, mxGeometry
 getTerminalPort, mxGraphView
 getText, mxXmlRequest
 getTextContent, mxUtils
 getTextRotation
 getTextScale, mxCellRenderer
 getTitle, mxEditor
 getTolerance
 getTooltip, mxGraph
 getTooltipForCell, mxGraph
 getTooltipForNode
 getTopmostCells, mxGraphModel
 getTotalRotation, mxVertexHandler
 getTranslate, mxGraphView
 getTranslateForEvent, mxOutline
 getTranslateForRoot, mxGraph
 getUrlImage, mxEditor
 getUrlPost, mxEditor
 getValidState, mxCellMarker
 getValue
 getValues, mxDictionary
 getVertexBounds, mxGraphLayout
 getVerticalAlign, mxGraph
 getView, mxGraph
 getViewXml, mxUtils
 getVisibleTerminal
 getVisibleTerminalState, mxCellState
 getVmlDashPattern, mxVmlCanvas2D
 getWindow, mxPrintPreview
 getX
 getXml
 getY
 graphContainsEvent, mxDragSource
 graphModelChanged
 graphRenderHint, mxOutline
 groupCells
 grow, mxRectangle
-
mxGraphModel.prototype.geometryForCellChanged = function(cell,
geometry)
Inner callback to update the mxGeometry of the given mxCell using mxCell.setGeometry and return the previous mxGeometry.
mxDictionary.prototype.get = function(key)
Returns the value for the given key.
get: function(obj)
Returns the object id for the given object.
get: function(key,
params,
defaultValue)
Returns the value for the specified resource key.
get: function(url,
onload,
onerror)
Loads the specified URL asynchronously and invokes the given functions depending on the request status.
getAlignmentAsPoint: function(align,
valign)
Returns an mxPoint that represents the horizontal and vertical alignment for numeric computations.
mxConnectionHandler.prototype.getAlignmentTolerance = function(evt)
Returns the tolerance for aligning new targets to sources.
mxGraph.prototype.getAllConnectionConstraints = function(terminal,
source)
Returns an array of all mxConnectionConstraints for the given terminal.
mxGraph.prototype.getAllEdges = function(cells)
Returns all edges connected to the given cells or its descendants.
Returns the alternate content for the given foreignObject.
mxPrintPreview.prototype.getAppendices = function()
Returns the pages to be added after the print output.
mxShape.prototype.getArcSize = function(w,
h)
Returns the arc size for the given dimension.
mxSwimlane.prototype.getArcSize = function(w,
h,
start)
Returns the arcsize for the swimlane.
mxCell.prototype.getAttribute = function(name,
defaultValue)
Returns the specified attribute from the user object if it is an XML node.
mxObjectCodec.prototype.getAttributeName = function(fieldname)
Returns the attributename for the given fieldname.
mxGraph.prototype.getBackgroundImage = function()
Returns the backgroundImage as an mxImage.
mxGraphView.prototype.getBackgroundPageBounds = function()
Returns the bounds for the background page.
mxGraphView.prototype.getBackgroundPane = function()
Returns the DOM node that represents the background layer.
mxUrlConverter.prototype.getBaseDomain = function()
Returns baseDomain.
mxSvgCanvas2D.prototype.getBaseUrl = function()
Returns the URL of the page without the hash part.
mxUrlConverter.prototype.getBaseUrl = function()
Returns baseUrl.
mxGraph.prototype.getBorder = function()
Returns the value of border.
mxGraph.prototype.getBorderSizes = function()
Returns the size of the border and padding on all four sides of the container.
mxGraphHandler.prototype.getBoundingBox = function(cells)
Returns the mxRectangle that represents the bounding box for the given cells.
mxGraphView.prototype.getBoundingBox = function(state,
recurse)
Returns the bounding box of the shape and the label for the given mxCellState and its children if recurse is true.
getBoundingBox: function(rect,
rotation,
cx)
Returns the bounding box for the rotated rectangle.
mxGraph.prototype.getBoundingBoxFromGeometry = function(cells,
includeEdges)
Returns the bounding box for the geometries of the vertices in the given array of cells.
mxCellOverlay.prototype.getBounds = function(state)
Returns the bounds of the overlay for the given mxCellState as an mxRectangle.
mxGraphView.prototype.getBounds = function(cells)
Returns the bounds (on the screen) for the given array of mxCells.
mxGraph.prototype.getBoundsForGroup = function(group,
children,
border)
Returns the bounds to be used for the given group and children.
mxGraphView.prototype.getCanvas = function()
Returns the DOM node that contains the background-, draw- and overlay- and decoratorpanes.
mxCellMarker.prototype.getCell = function(me)
Returns the mxCell for the given event and cell.
mxGraphModel.prototype.getCell = function(id)
Returns the mxCell for the specified Id or null if no cell can be found for the given Id.
mxMouseEvent.prototype.getCell = function()
Returns the mxCell in state is not null.
mxConnectionHandler.prototype.getCellAt = function(x,
y)
Creates and returns the mxCellMarker used in marker.
mxEdgeHandler.prototype.getCellAt = function(x,
y)
Creates and returns the mxCellMarker used in marker.
mxGraph.prototype.getCellAt = function(x,
y,
parent,
vertices,
edges)
Returns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy starting at the given parent.
mxCellState.prototype.getCellBounds = function ()
Returns the unscaled, untranslated bounds.
mxGraph.prototype.getCellBounds = function(cell,
includeEdges,
includeDescendants)
Returns the scaled, translated bounds for the given cell.
mxGraph.prototype.getCellContainmentArea = function(cell)
Returns the mxRectangle inside which a cell is to be kept.
mxPopupMenuHandler.prototype.getCellForPopupEvent = function(me)
Hook to return the cell for the mouse up popup trigger handling.
mxGraph.prototype.getCellGeometry = function(cell)
Returns the mxGeometry for the given cell.
mxGraph.prototype.getCellOverlays = function(cell)
Returns the array of mxCellOverlays for the given cell or null, if no overlays are defined.
getCells: function()
Returns the cells in the clipboard.
mxGraph.prototype.getCells = function(x,
y,
width,
height,
parent,
result)
Returns the child vertices and edges of the given parent that are contained in the given rectangle.
mxGraphHandler.prototype.getCells = function(initialCell)
Returns the cells to be modified by this handler.
mxGraph.prototype.getCellsBeyond = function(x0,
y0,
parent,
rightHalfpane,
bottomHalfpane)
Returns the children of the given parent that are contained in the halfpane from the given point (x0, y0) rightwards and/or downwards depending on rightHalfpane and bottomHalfpane.
mxLayoutManager.prototype.getCellsForChange = function(change)
Executes all layouts which have been scheduled during the changes.
Returns the cells to be layouted for the given sequence of changes.
mxGraph.prototype.getCellsForGroup = function(cells)
Returns the cells with the same parent as the first cell in the given array.
mxGraphView.prototype.getCellStates = function(cells)
Returns the mxCellStates for the given array of mxCells.
mxSpaceManager.prototype.getCellsToShift = function(state)
Returns the cells to shift after a resize of the specified mxCellState.
mxGraph.prototype.getCellStyle = function(cell)
Returns an array of key, value pairs representing the cell style for the given cell.
mxStylesheet.prototype.getCellStyle = function(name,
defaultStyle)
Returns the cell style for the specified stylename or the given defaultStyle if no style can be found for the given stylename.
mxGraph.prototype.getCellValidationError = function(cell)
Checks all multiplicities that cannot be enforced while the graph is being modified, namely, all multiplicities that require a minimum of 1 edge.
mxRectangle.prototype.getCenterX = function ()
Returns the x-coordinate of the center point.
mxRectangle.prototype.getCenterY = function ()
Returns the y-coordinate of the center point.
mxCell.prototype.getChildAt = function(index)
Returns the child at the specified index.
mxGraphModel.prototype.getChildAt = function(cell,
index)
Returns the child of the given mxCell at the given index.
mxGraph.prototype.getChildCells = function(parent,
vertices,
edges)
Returns the visible child vertices or edges in the given parent.
mxGraphModel.prototype.getChildCells = function(parent,
vertices,
edges)
Returns the children of the given cell that are vertices and/or edges depending on the arguments.
mxCell.prototype.getChildCount = function()
Returns the number of child cells.
mxGraphModel.prototype.getChildCount = function(cell)
Returns the number of children in the given cell.
mxGraph.prototype.getChildEdges = function(parent)
Returns the visible child edges of the given parent.
mxGraphModel.prototype.getChildEdges = function(parent)
Returns the child edges of the given parent.
getChildNodes: function(node,
nodeType)
Returns an array of child nodes that are of the given node type.
mxGraph.prototype.getChildOffsetForCell = function(cell)
Returns the offset to be used for the cells inside the given cell.
mxGraphModel.prototype.getChildren = function(cell)
Returns all children of the given mxCell as an array of mxCells.
mxGraph.prototype.getChildVertices = function(parent)
Returns the visible child vertices of the given parent.
mxGraphModel.prototype.getChildVertices = function(parent)
Returns the child vertices of the given parent.
getClientX: function(e)
Returns true if the meta key is pressed for the given event.
getClientY: function(e)
Returns true if the meta key is pressed for the given event.
mxGraph.prototype.getCloneableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
getCodec: function(ctor)
Returns a codec that handles objects that are constructed using the given constructor.
getColor: function(array,
key,
defaultValue)
Returns the color value for the given key in the given associative array or the given default value if the value is null.
mxConnectionHandler.prototype.getConnectImage = function(state)
Hook to return the mxImage used for the connection icon of the given mxCellState.
mxGraph.prototype.getConnectionConstraint = function(edge,
terminal,
source)
Returns an mxConnectionConstraint that describes the given connection point.
mxGraph.prototype.getConnectionPoint = function(vertex,
constraint)
Returns the nearest point in the list of absolute points or the center of the opposite terminal.
mxGraph.prototype.getConnections = function(cell,
parent)
Returns all visible edges connected to the given cell without loops.
mxGraphModel.prototype.getConnections = function(cell)
Returns all edges of the given cell without loops.
mxGraphLayout.prototype.getConstraint = function(key,
cell,
edge,
source)
Returns the constraint for the given key and cell.
mxCellRenderer.prototype.getControlBounds = function(state,
w,
h)
Returns the bounds to be used to draw the control (folding icon) of the given state.
mxGraphHierarchyEdge.prototype.getCoreCell = function()
Gets the first core edge associated with this wrapper
mxGraphHierarchyNode.prototype.getCoreCell = function()
Gets the core vertex associated with this wrapper
mxPrintPreview.prototype.getCoverPages = function()
Returns the pages to be added before the print output.
mxCellEditor.prototype.getCurrentHtmlValue = function()
Returns the current value as HTML to measure the text size.
mxEdgeSegmentHandler.prototype.getCurrentPoints = function()
Returns the current absolute points.
mxGraph.prototype.getCurrentRoot = function()
Returns the current root of the displayed cell hierarchy.
mxSvgCanvas2D.prototype.getCurrentStrokeWidth = function()
Returns the current stroke width (>= 1), ie.
getCurrentStyle: function()
Returns the current style of the specified element.
mxCellEditor.prototype.getCurrentValue = function()
Returns the current editing value.
mxShape.prototype.getCursor = function()
Returns the current cursor.
mxElbowEdgeHandler.prototype.getCursorForBend = function()
Returns the cursor to be used for the bend.
mxGraph.prototype.getCursorForCell = function(cell)
Returns the cursor value to be used for the CSS of the shape for the given cell.
mxGraph.prototype.getCursorForMouseEvent = function(me)
Returns the cursor value to be used for the CSS of the shape for the given event.
mxGraphView.prototype.getDecoratorPane = function()
Returns the DOM node that represents the topmost drawing layer.
getDefaultBundle: function(basename,
lan)
Hook for subclassers to return the URL for the special bundle.
mxStylesheet.prototype.getDefaultEdgeStyle = function()
Sets the default style for edges.
mxGraph.prototype.getDefaultParent = function()
Returns defaultParent or mxGraphView.currentRoot or the first child child of mxGraphModel.root if both are null.
mxStylesheet.prototype.getDefaultVertexStyle = function()
Returns the default style for vertices.
mxGraph.prototype.getDeletableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
mxGraphHandler.prototype.getDelta = function(me)
Returns an mxPoint that represents the vector for moving the cells for the given mxMouseEvent.
mxMorphing.prototype.getDelta = function(state)
Returns the vector between the current rendered state and the future location of the state after the display will be updated.
mxGraphModel.prototype.getDescendants = function(parent)
Returns all descendants of the given cell and the cell itself in an array.
mxGraphModel.prototype.getDirectedEdgeCount = function(cell,
outgoing,
ignoredEdge)
Returns the number of incoming or outgoing edges, ignoring the given edge.
Returns the string that should go before the HTML tag in the print preview page.
mxXmlRequest.prototype.getDocumentElement = function()
Returns the document element of the response XML document.
mxDivResizer.prototype.getDocumentHeight = function()
Hook for subclassers to return the height of the document (without scrollbars).
getDocumentScrollOrigin: function(doc)
Returns the scroll origin of the given document or the current document if no document is given.
mxDivResizer.prototype.getDocumentWidth = function()
Hook for subclassers to return the width of the document (without scrollbars).
mxGraphView.prototype.getDrawPane = function()
Returns the DOM node that represents the main drawing layer.
mxDragSource.prototype.getDropTarget = function(graph,
x,
y,
evt)
Returns the drop target for the given graph and coordinates.
mxGraph.prototype.getDropTarget = function(cells,
evt,
cell,
clone)
Returns the given cell if it is a drop target for the given cells or the nearest ancestor that may be used as a drop target for the given cells.
mxCell.prototype.getEdgeAt = function(index)
Returns the edge at the specified index in edges.
mxGraphModel.prototype.getEdgeAt = function(cell,
index)
Returns the edge of cell at the given index.
mxConnectionHandler.prototype.getEdgeColor = function(valid)
Returns the color used to draw the preview edge.
mxCell.prototype.getEdgeCount = function()
Returns the number of edges in the edge array.
mxGraphModel.prototype.getEdgeCount = function(cell)
Returns the number of distinct edges connected to the given cell.
mxParallelEdgeLayout.prototype.getEdgeId = function(edge)
Returns a unique ID for the given edge.
mxCell.prototype.getEdgeIndex = function(edge)
Returns the index of the specified edge in edges.
mxGraph.prototype.getEdges = function(cell,
parent,
incoming,
outgoing,
includeLoops,
recurse)
Returns the incoming and/or outgoing edges for the given cell.
mxGraphModel.prototype.getEdges = function(cell,
incoming,
outgoing,
includeLoops)
Returns all distinct edges connected to this cell as a new array of mxCells.
mxHierarchicalLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxSwimlaneLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxGraph.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxGraphModel.prototype.getEdgesBetween = function(source,
target,
directed)
Returns all edges between the given source and target pair.
mxHierarchicalLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxSwimlaneLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxEditor.prototype.getEdgeStyle = function ()
Returns a string identifying the style of new edges.
mxGraphView.prototype.getEdgeStyle = function(edge,
points,
source,
target)
Returns the edge style function to be used to render the given edge state.
mxGraph.prototype.getEdgeValidationError = function(edge,
source,
target)
Returns the validation error message to be displayed when inserting or changing an edges’ connectivity.
mxConnectionHandler.prototype.getEdgeWidth = function(valid)
Returns the width used to draw the preview edge.
mxCellEditor.prototype.getEditingCell = function ()
Returns the cell that is currently being edited or null if no cell is being edited.
mxGraph.prototype.getEditingValue = function(cell,
evt)
Returns the initial value for in-place editing.
mxCellEditor.prototype.getEditorBounds = function(state)
Returns the mxRectangle that defines the bounds of the editor.
mxWindow.prototype.getElement = function()
Returuns the outermost DOM node that makes up the window.
mxCodec.prototype.getElementById = function(id,
attr)
Returns the element with the given ID from document.
mxGraphView.prototype.getEmptyBounds = function()
Returns the bounds for an empty graph.
mxCellEditor.prototype.getEmptyLabelText = function (cell)
Returns the initial label value to be used of the label of the given cell is empty.
mxMouseEvent.prototype.getEvent = function()
Returns evt.
mxEventSource.prototype.getEventSource = function()
Returns eventSource.
mxGraph.prototype.getExportableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
mxObjectCodec.prototype.getFieldName = function(attributename)
Returns the fieldname for the given attributename.
mxObjectCodec.prototype.getFieldTemplate = function(obj,
fieldname,
child)
Returns the template instance for the given field.
mxGraphSelectionModel.prototype.getFirstSelectableCell = function(cells)
Returns the first selectable cell in the given array of cells.
mxGraph.prototype.getFoldableCells = function(cells,
collapse)
Returns the cells which are movable in the given array of cells.
mxGraph.prototype.getFoldingImage = function(state)
Returns the mxImage used to display the collapsed state of the specified cell state.
mxKeyHandler.prototype.getFunction = function(evt)
Returns the function associated with the given key event or null if no function is associated with the given event.
getFunctionName: function(f)
Returns the name for the given function.
mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable = function(
   layer
)
Gets the value of temp for the specified layer
mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable = function(layer)
Gets the value of temp for the specified layer
mxGraphHierarchyNode.prototype.getGeneralPurposeVariable = function(layer)
Gets the value of temp for the specified layer
mxCell.prototype.getGeometry = function()
Returns the mxGeometry that describes the geometry.
mxGraphModel.prototype.getGeometry = function(cell)
Returns the mxGeometry of the given mxCell.
mxShape.prototype.getGradientBounds = function(c,
x,
y,
w,
h)
Returns the bounding box for the gradient box for this shape.
Returns the bounding box for the gradient box for this shape.
mxGraphLayout.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxLayoutManager.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxSpaceManager.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxSwimlaneManager.prototype.getGraph = function()
Returns the graph that this manager operates on.
mxGraph.prototype.getGraphBounds = function()
Returns the bounds of the visible graph.
mxGraphView.prototype.getGraphBounds = function()
Returns graphBounds.
mxDragSource.prototype.getGraphForEvent = function(evt)
Returns the graph for the given mouse event.
mxMouseEvent.prototype.getGraphX = function()
Returns graphX.
mxMouseEvent.prototype.getGraphY = function()
Returns graphY.
mxGraph.prototype.getGridSize = function()
Returns gridSize.
mxGraphHandler.prototype.getGuideStates = function()
Creates an array of cell states which should be used as guides.
mxGuide.prototype.getGuideTolerance = function()
Returns the tolerance for the guides.
mxEdgeHandler.prototype.getHandleFillColor = function(index)
Returns the fillcolor for the handle at the given index.
mxEdgeHandler.prototype.getHandleForEvent = function(me)
Returns the index of the handle for the given event.
mxVertexHandler.prototype.getHandleForEvent = function(me)
Returns the index of the handle for the given event.
mxSelectionCellsHandler.prototype.getHandler = function(cell)
Returns the handler for the given cell.
mxCellMarker.prototype.getHotspot = function()
Returns the hotspot.
mxCell.prototype.getId = function()
Returns the Id of the cell as a string.
mxCodec.prototype.getId = function(obj)
Returns the ID of the specified object.
mxGraph.prototype.getImage = function(state)
Returns the image URL for the given cell state.
mxImageBundle.prototype.getImage = function(key)
Returns the value for the given key.
mxLabel.prototype.getImageBounds = function(x,
y,
w,
h)
Generic background painting implementation.
mxSwimlane.prototype.getImageBounds = function(x,
y,
w,
h)
Paints the swimlane vertex shape.
mxConstraintHandler.prototype.getImageForConstraint = function(state,
constraint,
point)
Returns the tolerance to be used for intersecting connection points.
mxGraph.prototype.getImageFromBundles = function(key)
Searches all imageBundles for the specified key and returns the value for the first match or null if the key is not found.
mxGraph.prototype.getImportableCells = function(cells)
Returns the cells which may be imported in the given array of cells.
mxGraph.prototype.getIncomingEdges = function(cell,
parent)
Returns the visible incoming edges for the given cell.
mxGraphModel.prototype.getIncomingEdges = function(cell)
Returns the incoming edges of the given cell without loops.
mxCell.prototype.getIndex = function(child)
Returns the index of the specified child in the child array.
mxLabel.prototype.getIndicatorBounds = function(x,
y,
w,
h)
Generic background painting implementation.
mxGraph.prototype.getIndicatorColor = function(state)
Returns the indicator color for the given cell state.
mxGraph.prototype.getIndicatorGradientColor = function(state)
Returns the indicator gradient color for the given cell state.
mxGraph.prototype.getIndicatorImage = function(state)
Returns the indicator image for the given cell state.
mxGraph.prototype.getIndicatorShape = function(state)
Returns the indicator shape for the given cell state.
mxGraphHandler.prototype.getInitialCellForEvent = function(me)
Hook to return initial cell for the given event.
mxCellEditor.prototype.getInitialValue = function(state,
trigger)
Gets the initial editing value for the given cell.
getInnerHtml: function()
Returns the inner HTML for the given node as a string or an empty string if no node was specified.
mxDictionary.prototype.getKeys = function()
Returns all keys as an array.
mxGraph.prototype.getLabel = function(cell)
Returns a string or DOM node that represents the label for the given cell.
mxCellRenderer.prototype.getLabelBounds = function(state)
Returns the bounds to be used to draw the label of the given state.
mxDoubleEllipse.prototype.getLabelBounds = function(rect)
Returns the bounds for the label.
mxShape.prototype.getLabelBounds = function(rect)
Returns the mxRectangle for the label bounds of this shape, based on the given scaled and translated bounds of the shape.
mxCellRenderer.prototype.getLabelValue = function(state)
Returns the value to be used for the label.
mxLayoutManager.prototype.getLayout = function(parent)
Returns the layout to be executed for the given graph and parent.
mxImageExport.prototype.getLinkForCellState = function(state,
canvas)
Returns the link for the given cell state and canvas.
getMainEvent: function(e)
Returns the touch or mouse event that contains the mouse coordinates.
Returns the spacing as an mxPoint.
mxCellMarker.prototype.getMarkedState = function()
Returns the markedState.
mxCellMarker.prototype.getMarkerColor = function(evt,
state,
isValid)
Returns the valid- or invalidColor depending on the value of isValid.
mxGraph.prototype.getMaximumGraphBounds = function()
Returns the bounds inside which the diagram should be kept as an mxRectangle.
mxCellEditor.prototype.getMinimumSize = function(state)
Returns the minimum width and height for editing the given state.
mxWindow.prototype.getMinimumSize = function()
Returns an mxRectangle that specifies the size for the minimized window.
mxGraph.prototype.getModel = function()
Returns the mxGraphModel that contains the cells.
mxHierarchicalLayout.prototype.getModel = function()
Returns the internal mxGraphHierarchyModel for this layout algorithm.
mxSwimlaneLayout.prototype.getModel = function()
Returns the internal mxSwimlaneModel for this layout algorithm.
mxGraph.prototype.getMovableCells = function(cells)
Returns the cells which are movable in the given array of cells.
mxEventObject.prototype.getName = function()
Returns name.
mxObjectCodec.prototype.getName = function()
Returns the name used for the nodenames and lookup of the codec when classes are encoded and nodes are decoded.
getName: function(value)
Returns the name for the given value.
mxGraphModel.prototype.getNearestCommonAncestor = function(cell1,
cell2)
Returns the nearest common ancestor for the specified cells.
mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells = function(
   layer
)
Returns the cells this cell connects to on the next layer up
mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer up
mxGraphHierarchyNode.prototype.getNextLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer up
mxGraphView.prototype.getNextPoint = function(edge,
opposite,
source)
Returns the nearest point in the list of absolute points or the center of the opposite terminal.
getNumber: function(array,
key,
defaultValue)
Returns the numeric value for the given key in the given associative array or the given default value (or 0) if the value is null.
mxCodec.prototype.getObject = function(id)
Returns the decoded object for the element with the specified ID in document.
getOffset: function(container,
scrollOffset)
Returns the offset for the specified container as an mxPoint.
mxGraph.prototype.getOpposites = function(edges,
terminal,
sources,
targets)
Returns all distinct visible opposite cells for the specified terminal on the given edges.
mxGraphModel.prototype.getOpposites = function(edges,
terminal,
sources,
targets)
Returns all opposite vertices wrt terminal for the given edges, only returning sources and/or targets as specified.
mxGraphModel.prototype.getOrigin = function(cell)
Returns the absolute, accumulated origin for the children inside the given parent as an mxPoint.
mxMorphing.prototype.getOriginForCell = function(cell)
Returns the top, left corner of the given cell.
getOuterHtml: function()
Returns the outer HTML for the given node as a string or an empty string if no node was specified.
mxGraph.prototype.getOutgoingEdges = function(cell,
parent)
Returns the visible outgoing edges for the given cell.
mxGraphModel.prototype.getOutgoingEdges = function(cell)
Returns the outgoing edges of the given cell without loops.
mxGraph.prototype.getOutlineConstraint = function(point,
terminalState,
me)
Returns the constraint used to connect to the outline of the given state.
mxOutline.prototype.getOutlineOffset = function(scale)
Returns the offset for drawing the outline graph.
mxGraph.prototype.getOverlap = function(cell)
Returns a decimal number representing the amount of the width and height of the given cell that is allowed to overlap its parent.
mxGraphView.prototype.getOverlayPane = function()
Returns the DOM node that represents the layer above the drawing layer.
mxCellState.prototype.getPaintBounds = function ()
Returns the unscaled, untranslated paint bounds.
mxCell.prototype.getParent = function()
Returns the cell’s parent.
mxGraphModel.prototype.getParent = function(cell)
Returns the parent of the given cell.
mxGraphLayout.prototype.getParentOffset = function(parent)
Determines the offset of the given parent to the parent of the layout
getParentPath: function(path)
Returns the path for the parent of the cell represented by the given path.
mxGraphModel.prototype.getParents = function(cells)
Returns an array that represents the set (no duplicates) of all parents for the given array of cells.
mxStackLayout.prototype.getParentSize = function(parent)
Returns the size for the parent container or the size of the graph container if the parent is a layer or the root of the model.
mxCellState.prototype.getPerimeterBounds = function (border,
bounds)
Returns the mxRectangle that should be used as the perimeter of the cell.
mxGraphView.prototype.getPerimeterBounds = function(terminal,
border)
Returns the perimeter bounds for the given terminal, edge pair as an mxRectangle.
mxGraphView.prototype.getPerimeterFunction = function(state)
Returns the perimeter function for the given state.
mxGraphView.prototype.getPerimeterPoint = function(terminal,
next,
orthogonal,
border)
Returns an mxPoint that defines the location of the intersection point between the perimeter and the line between the center of the shape and the given point.
mxGraphView.prototype.getPoint = function(state,
geometry)
Returns the absolute point on the edge for the given relative mxGeometry as an mxPoint.
mxRectangle.prototype.getPoint = function()
Returns the top, left corner as a new mxPoint.
mxEdgeHandler.prototype.getPointForEvent = function(me)
Returns the point for the given event.
mxGraph.prototype.getPointForEvent = function(evt,
addOffset)
Returns an mxPoint representing the given event in the unscaled, non-translated coordinate space of container and applies the grid.
mxHandle.prototype.getPosition = function(bounds)
Hook for subclassers to return the current position of the handle.
mxGraph.prototype.getPreferredPageSize = function(bounds,
width,
height)
Returns the preferred size of the background page if preferPageSize is true.
mxGraph.prototype.getPreferredSizeForCell = function(cell)
Returns the preferred width and height of the given mxCell as an mxRectangle.
Returns a pretty printed string that represents the XML tree for the given node.
mxGraphHandler.prototype.getPreviewBounds = function(cells)
Returns the mxRectangle used as the preview bounds for moving the given cells.
mxEdgeSegmentHandler.prototype.getPreviewPoints = function(point)
Updates the given preview state taking into account the state of the constraint handler.
mxEdgeHandler.prototype.getPreviewPoints = function(pt)
Updates the given preview state taking into account the state of the constraint handler.
mxEdgeHandler.prototype.getPreviewTerminalState = function(me)
Updates the given preview state taking into account the state of the constraint handler.
mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells = function(
   layer
)
Returns the cells this cell connects to on the next layer down
mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer down
mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer down
mxEventObject.prototype.getProperties = function()
Returns properties.
mxEventObject.prototype.getProperty = function(key)
Returns the property for the given key.
mxCircleLayout.prototype.getRadius = function(count,
max)
Returns the radius to be used for the given vertex count.
mxGraphHierarchyNode.prototype.getRankValue = function(layer)
Returns the integer value of the layer that this node resides in
mxGraphView.prototype.getRelativePoint = function(edgeState,
x,
y)
Gets the relative point that describes the given, absolute label position for the given edge state.
mxGraph.prototype.getRemovedCellsForChanges = function(changes)
Returns the cells that have been removed from the model.
mxGraphModel.prototype.getRoot = function(cell)
Returns the root of the model or the topmost parent of the given cell.
mxPrintPreview.prototype.getRoot = function()
Returns the root cell for painting the graph.
mxEditor.prototype.getRootTitle = function ()
Returns the string value of the root cell in mxGraph.model.
getRotatedPoint: function(pt,
cos,
sin,
c)
Rotates the given point by the given cos and sin.
mxPolyline.prototype.getRotation = function()
Returns 0.
mxShape.prototype.getRotation = function()
Returns the rotation from the style.
mxHandle.prototype.getRotation = function()
Returns the rotation defined in the style of the cell.
mxGraphView.prototype.getRoutingCenterX = function (state)
Returns the x-coordinate of the center point for automatic routing.
mxGraphView.prototype.getRoutingCenterY = function (state)
Returns the y-coordinate of the center point for automatic routing.
mxGraphView.prototype.getScale = function()
Returns the scale.
getScaleForPageCount: function(pageCount,
graph,
pageFormat,
border)
Returns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.
getScrollOrigin: function(node)
Returns the top, left corner of the viewrect as an mxPoint.
mxVertexHandler.prototype.getSelectionBounds = function(state)
Returns the mxRectangle that defines the bounds of the selection border.
mxGraph.prototype.getSelectionCell = function()
Returns the first cell from the array of selected mxCells.
mxGraph.prototype.getSelectionCells = function()
Returns the array of selected mxCells.
mxGraph.prototype.getSelectionCellsForChanges = function(changes)
Returns the cells to be selected for the given array of changes.
mxEdgeHandler.prototype.getSelectionColor = function()
Returns mxConstants.EDGE_SELECTION_COLOR.
mxVertexHandler.prototype.getSelectionColor = function()
Returns mxConstants.VERTEX_SELECTION_COLOR.
mxGraph.prototype.getSelectionCount = function()
Returns the number of selected cells.
mxGraph.prototype.getSelectionModel = function()
Returns the mxGraphSelectionModel that contains the selection.
mxEdgeHandler.prototype.getSelectionPoints = function(state)
Returns the list of points that defines the selection stroke.
mxEdgeHandler.prototype.getSelectionStrokeWidth = function()
Returns mxConstants.EDGE_SELECTION_STROKEWIDTH.
mxVertexHandler.prototype.getSelectionStrokeWidth = function()
Returns mxConstants.VERTEX_SELECTION_STROKEWIDTH.
mxCellRenderer.prototype.getShape = function(name)
Returns the shape for the given name from defaultShapes.
mxCellRenderer.prototype.getShapeConstructor = function(state)
Returns the constructor to be used for creating the shape.
mxPolyline.prototype.getShapeRotation = function()
Returns 0.
mxShape.prototype.getShapeRotation = function()
Returns the actual rotation of the shape.
mxText.prototype.getShapeRotation = function()
Returns 0 to avoid using rotation in the canvas via updateTransform.
mxCellRenderer.prototype.getShapesForState = function(state)
Returns the mxShapes for the given cell state in the order in which they should appear in the DOM.
getSizeForString: function(text,
fontSize,
fontFamily,
textWidth)
Returns an mxRectangle with the size (width and height in pixels) of the given string.
mxEdgeHandler.prototype.getSnapToTerminalTolerance = function()
Returns the tolerance for the guides.
getSource: function(evt)
Returns the event’s target or srcElement depending on the browser.
mxMouseEvent.prototype.getSource = function()
Returns the target DOM element using mxEvent.getSource for evt.
mxOutline.prototype.getSourceContainerSize = function()
Returns the size of the source container.
mxConnectionHandler.prototype.getSourcePerimeterPoint = function(state,
next,
me)
Hook to update the icon position(s) based on a mouseOver event.
mxText.prototype.getSpacing = function()
Returns the spacing as an mxPoint.
getSpecialBundle: function(basename,
lan)
Hook for subclassers to return the URL for the special bundle.
mxGraph.prototype.getStartSize = function(swimlane)
Returns the start size of the given swimlane, that is, the width or height of the part that contains the title, depending on the horizontal style.
mxCellMarker.prototype.getState = function(me)
Uses getCell, getStateToMark and intersects to return the mxCellState for the given mxMouseEvent.
mxGraphView.prototype.getState = function(cell,
create)
Returns the mxCellState for the given cell.
mxMouseEvent.prototype.getState = function()
Returns state.
Returns the state for the given touch event.
mxGraphView.prototype.getStates = function()
Returns states.
mxCellMarker.prototype.getStateToMark = function(state)
Returns the mxCellState to be marked for the given mxCellState under the mouse.
mxXmlRequest.prototype.getStatus = function()
Returns the status as a number, eg.
getStencil: function(name)
Returns the mxStencil for the given name.
codec.getStringValue = function(key,
value)
Returns the string for encoding the given value.
mxCell.prototype.getStyle = function()
Returns a string that describes the style.
mxGraphModel.prototype.getStyle = function(cell)
Returns the style of the given mxCell.
getStylename: function(style)
Returns the stylename in a style of the form [(stylename|key=value);] or an empty string if the given style does not contain a stylename.
getStylenames: function(style)
Returns the stylenames in a style of the form [(stylename|key=value);] or an empty array if the given style does not contain any stylenames.
mxGraph.prototype.getStylesheet = function()
Returns the mxStylesheet that defines the style.
mxSvgCanvas2D.prototype.getSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxImageShape.prototype.getSvgScreenOffset = function()
Disables offset in IE9 for crisper image output.
mxShape.prototype.getSvgScreenOffset = function()
Returns 0, or 0.5 if strokewidth % 2 == 1.
mxText.prototype.getSvgScreenOffset = function()
Disables offset in IE9 for crisper image output.
mxGraph.prototype.getSwimlane = function(cell)
Returns the nearest ancestor of the given cell which is a swimlane, or the given cell, if it is itself a swimlane.
mxGraph.prototype.getSwimlaneAt = function (x,
y,
parent)
Returns the bottom-most swimlane that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
mxForm.prototype.getTable = function()
Returns the table that contains this form.
mxConnectionHandler.prototype.getTargetPerimeterPoint = function(state,
me)
Returns the perimeter point for the given target state.
mxEditor.prototype.getTemplate = function (name)
Returns the template for the given name.
mxCell.prototype.getTerminal = function(source)
Returns the source or target terminal.
mxGraphModel.prototype.getTerminal = function(edge,
isSource)
Returns the source or target mxCell of the given edge depending on the value of the boolean parameter.
mxGraph.prototype.getTerminalForPort = function(cell,
source)
Returns the terminal to be used for a given port.
mxGeometry.prototype.getTerminalPoint = function(isSource)
Returns the mxPoint representing the source or target point of this edge.
mxGraphView.prototype.getTerminalPort = function(state,
terminal,
source)
Returns an mxCellState that represents the source or target terminal or port for the given edge.
mxXmlRequest.prototype.getText = function()
Returns the response as a string.
getTextContent: function(node)
Returns the text content of the specified node.
mxShape.prototype.getTextRotation = function()
Returns the rotation for the text label.
mxText.prototype.getTextRotation = function()
Returns the rotation for the text label of the corresponding shape.
mxCellRenderer.prototype.getTextScale = function(state)
Returns the scaling used for the label of the given state
mxEditor.prototype.getTitle = function ()
Returns the string value for the current root of the diagram.
mxConstraintHandler.prototype.getTolerance = function(me)
Returns the tolerance to be used for intersecting connection points.
mxGraph.prototype.getTolerance = function()
Returns tolerance.
mxGraph.prototype.getTooltip = function(state,
node,
x,
y)
Returns the string or DOM node that represents the tooltip for the given state, node and coordinate pair.
mxGraph.prototype.getTooltipForCell = function(cell)
Returns the string or DOM node to be used as the tooltip for the given cell.
mxEdgeSegmentHandler.prototype.getTooltipForNode = function(node)
Returns no tooltips.
mxElbowEdgeHandler.prototype.getTooltipForNode = function(node)
Returns the tooltip for the given node.
mxGraphModel.prototype.getTopmostCells = function(cells)
Returns the topmost cells of the hierarchy in an array that contains no descendants for each mxCell that it contains.
mxHandle.prototype.getTotalRotation = function()
Returns the rotation from the style and the rotation from the direction of the cell.
mxGraphView.prototype.getTranslate = function()
Returns the translate.
mxOutline.prototype.getTranslateForEvent = function(me)
Gets the translate for the given mouse event.
mxGraph.prototype.getTranslateForRoot = function(cell)
Returns the translation to be used if the given cell is the root cell as an mxPoint.
mxEditor.prototype.getUrlImage = function ()
Returns the URL to create the image with.
mxEditor.prototype.getUrlPost = function ()
Returns the URL to post the diagram to.
mxCellMarker.prototype.getValidState = function()
Returns the validState.
mxCell.prototype.getValue = function()
Returns the user object of the cell.
mxGraphModel.prototype.getValue = function(cell)
Returns the user object of the given mxCell using mxCell.getValue.
getValue: function(name)
Returns the value associated with the given name.
getValue: function(array,
key,
defaultValue)
Returns the value for the given key in the given associative array or the given default value if the value is null.
mxDictionary.prototype.getValues = function()
Returns all values as an array.
mxGraphLayout.prototype.getVertexBounds = function(cell)
Returns an mxRectangle that defines the bounds of the given cell or the bounding box if useBoundingBox is true.
mxGraph.prototype.getVerticalAlign = function(state)
Returns the vertical alignment for the given cell state.
mxGraph.prototype.getView = function()
Returns the mxGraphView that contains the mxCellStates.
getViewXml: function(graph,
scale,
cells,
x0,
y0)
mxCellState.prototype.getVisibleTerminal = function (source)
Returns the visible source or target terminal cell.
mxGraphView.prototype.getVisibleTerminal = function(edge,
source)
Returns the nearest ancestor terminal that is visible.
mxHierarchicalLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxSwimlaneLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxCellState.prototype.getVisibleTerminalState = function (source)
Returns the visible source or target terminal state.
Returns a VML dash pattern for the current dashPattern.
mxPrintPreview.prototype.getWindow = function()
Returns wnd.
mxGraphAbstractHierarchyCell.prototype.getX = function(layer)
Gets the value of x on the specified layer
mxMouseEvent.prototype.getX = function()
Returns evt.clientX.
mxWindow.prototype.getX = function()
Returns the current position on the x-axis.
getXml: function(node,
linefeed)
Returns the XML content of the specified node.
mxXmlRequest.prototype.getXml = function()
Returns the response as an XML document.
mxMouseEvent.prototype.getY = function()
Returns evt.clientY.
mxWindow.prototype.getY = function()
Returns the current position on the y-axis.
mxDragSource.prototype.graphContainsEvent = function(graph,
evt)
Returns true if the given graph contains the given event.
mxAutoSaveManager.prototype.graphModelChanged = function(changes)
Invoked when the graph model has changed.
mxGraph.prototype.graphModelChanged = function(changes)
Called when the graph model changes.
Renderhint to be used for the outline graph.
mxEditor.prototype.groupCells = function ()
Invokes createGroup to create a new group cell and the invokes mxGraph.groupCells, using the grid size of the graph as the spacing in the group’s content area.
mxGraph.prototype.groupCells = function(group,
border,
cells)
Adds the cells into the given group.
mxRectangle.prototype.grow = function(amount)
Grows the rectangle by the given amount, that is, this method subtracts the given amount from the x- and y-coordinates and adds twice the amount to the width and height.
+
mxGraphModel.prototype.geometryForCellChanged = function(cell,
geometry)
Inner callback to update the mxGeometry of the given mxCell using mxCell.setGeometry and return the previous mxGeometry.
mxDictionary.prototype.get = function(key)
Returns the value for the given key.
get: function(obj)
Returns the object id for the given object.
get: function(key,
params,
defaultValue)
Returns the value for the specified resource key.
get: function(url,
onload,
onerror)
Loads the specified URL asynchronously and invokes the given functions depending on the request status.
getAlignmentAsPoint: function(align,
valign)
Returns an mxPoint that represents the horizontal and vertical alignment for numeric computations.
mxConnectionHandler.prototype.getAlignmentTolerance = function(evt)
Returns the tolerance for aligning new targets to sources.
mxGraph.prototype.getAllConnectionConstraints = function(terminal,
source)
Returns an array of all mxConnectionConstraints for the given terminal.
mxGraph.prototype.getAllEdges = function(cells)
Returns all edges connected to the given cells or its descendants.
Returns the alternate content for the given foreignObject.
mxPrintPreview.prototype.getAppendices = function()
Returns the pages to be added after the print output.
mxShape.prototype.getArcSize = function(w,
h)
Returns the arc size for the given dimension.
mxSwimlane.prototype.getArcSize = function(w,
h,
start)
Returns the arcsize for the swimlane.
mxCell.prototype.getAttribute = function(name,
defaultValue)
Returns the specified attribute from the user object if it is an XML node.
mxObjectCodec.prototype.getAttributeName = function(fieldname)
Returns the attributename for the given fieldname.
mxGraph.prototype.getBackgroundImage = function()
Returns the backgroundImage as an mxImage.
mxGraphView.prototype.getBackgroundPageBounds = function()
Returns the bounds for the background page.
mxGraphView.prototype.getBackgroundPane = function()
Returns the DOM node that represents the background layer.
mxUrlConverter.prototype.getBaseDomain = function()
Returns baseDomain.
mxSvgCanvas2D.prototype.getBaseUrl = function()
Returns the URL of the page without the hash part.
mxUrlConverter.prototype.getBaseUrl = function()
Returns baseUrl.
mxGraph.prototype.getBorder = function()
Returns the value of border.
mxGraph.prototype.getBorderSizes = function()
Returns the size of the border and padding on all four sides of the container.
mxGraphHandler.prototype.getBoundingBox = function(cells)
Returns the mxRectangle that represents the bounding box for the given cells.
mxGraphView.prototype.getBoundingBox = function(state,
recurse)
Returns the bounding box of the shape and the label for the given mxCellState and its children if recurse is true.
getBoundingBox: function(rect,
rotation,
cx)
Returns the bounding box for the rotated rectangle.
mxGraph.prototype.getBoundingBoxFromGeometry = function(cells,
includeEdges)
Returns the bounding box for the geometries of the vertices in the given array of cells.
mxCellOverlay.prototype.getBounds = function(state)
Returns the bounds of the overlay for the given mxCellState as an mxRectangle.
mxGraphView.prototype.getBounds = function(cells)
Returns the bounds (on the screen) for the given array of mxCells.
mxGraph.prototype.getBoundsForGroup = function(group,
children,
border)
Returns the bounds to be used for the given group and children.
mxGraphView.prototype.getCanvas = function()
Returns the DOM node that contains the background-, draw- and overlay- and decoratorpanes.
mxCellMarker.prototype.getCell = function(me)
Returns the mxCell for the given event and cell.
mxGraphModel.prototype.getCell = function(id)
Returns the mxCell for the specified Id or null if no cell can be found for the given Id.
mxMouseEvent.prototype.getCell = function()
Returns the mxCell in state is not null.
mxConnectionHandler.prototype.getCellAt = function(x,
y)
Creates and returns the mxCellMarker used in marker.
mxEdgeHandler.prototype.getCellAt = function(x,
y)
Creates and returns the mxCellMarker used in marker.
mxGraph.prototype.getCellAt = function(x,
y,
parent,
vertices,
edges)
Returns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy starting at the given parent.
mxCellState.prototype.getCellBounds = function ()
Returns the unscaled, untranslated bounds.
mxGraph.prototype.getCellBounds = function(cell,
includeEdges,
includeDescendants)
Returns the scaled, translated bounds for the given cell.
mxGraph.prototype.getCellContainmentArea = function(cell)
Returns the mxRectangle inside which a cell is to be kept.
mxPopupMenuHandler.prototype.getCellForPopupEvent = function(me)
Hook to return the cell for the mouse up popup trigger handling.
mxGraph.prototype.getCellGeometry = function(cell)
Returns the mxGeometry for the given cell.
mxGraph.prototype.getCellOverlays = function(cell)
Returns the array of mxCellOverlays for the given cell or null, if no overlays are defined.
getCells: function()
Returns the cells in the clipboard.
mxGraph.prototype.getCells = function(x,
y,
width,
height,
parent,
result)
Returns the child vertices and edges of the given parent that are contained in the given rectangle.
mxGraphHandler.prototype.getCells = function(initialCell)
Returns the cells to be modified by this handler.
mxGraph.prototype.getCellsBeyond = function(x0,
y0,
parent,
rightHalfpane,
bottomHalfpane)
Returns the children of the given parent that are contained in the halfpane from the given point (x0, y0) rightwards and/or downwards depending on rightHalfpane and bottomHalfpane.
mxLayoutManager.prototype.getCellsForChange = function(change)
Executes all layouts which have been scheduled during the changes.
Returns the cells to be layouted for the given sequence of changes.
mxGraph.prototype.getCellsForGroup = function(cells)
Returns the cells with the same parent as the first cell in the given array.
mxGraphView.prototype.getCellStates = function(cells)
Returns the mxCellStates for the given array of mxCells.
mxSpaceManager.prototype.getCellsToShift = function(state)
Returns the cells to shift after a resize of the specified mxCellState.
mxGraph.prototype.getCellStyle = function(cell)
Returns an array of key, value pairs representing the cell style for the given cell.
mxStylesheet.prototype.getCellStyle = function(name,
defaultStyle)
Returns the cell style for the specified stylename or the given defaultStyle if no style can be found for the given stylename.
mxGraph.prototype.getCellValidationError = function(cell)
Checks all multiplicities that cannot be enforced while the graph is being modified, namely, all multiplicities that require a minimum of 1 edge.
mxRectangle.prototype.getCenterX = function ()
Returns the x-coordinate of the center point.
mxRectangle.prototype.getCenterY = function ()
Returns the y-coordinate of the center point.
mxCell.prototype.getChildAt = function(index)
Returns the child at the specified index.
mxGraphModel.prototype.getChildAt = function(cell,
index)
Returns the child of the given mxCell at the given index.
mxGraph.prototype.getChildCells = function(parent,
vertices,
edges)
Returns the visible child vertices or edges in the given parent.
mxGraphModel.prototype.getChildCells = function(parent,
vertices,
edges)
Returns the children of the given cell that are vertices and/or edges depending on the arguments.
mxCell.prototype.getChildCount = function()
Returns the number of child cells.
mxGraphModel.prototype.getChildCount = function(cell)
Returns the number of children in the given cell.
mxGraph.prototype.getChildEdges = function(parent)
Returns the visible child edges of the given parent.
mxGraphModel.prototype.getChildEdges = function(parent)
Returns the child edges of the given parent.
getChildNodes: function(node,
nodeType)
Returns an array of child nodes that are of the given node type.
mxGraph.prototype.getChildOffsetForCell = function(cell)
Returns the offset to be used for the cells inside the given cell.
mxGraphModel.prototype.getChildren = function(cell)
Returns all children of the given mxCell as an array of mxCells.
mxGraph.prototype.getChildVertices = function(parent)
Returns the visible child vertices of the given parent.
mxGraphModel.prototype.getChildVertices = function(parent)
Returns the child vertices of the given parent.
getClientX: function(e)
Returns true if the meta key is pressed for the given event.
getClientY: function(e)
Returns true if the meta key is pressed for the given event.
mxGraph.prototype.getCloneableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
getCodec: function(ctor)
Returns a codec that handles objects that are constructed using the given constructor.
getColor: function(array,
key,
defaultValue)
Returns the color value for the given key in the given associative array or the given default value if the value is null.
mxConnectionHandler.prototype.getConnectImage = function(state)
Hook to return the mxImage used for the connection icon of the given mxCellState.
mxGraph.prototype.getConnectionConstraint = function(edge,
terminal,
source)
Returns an mxConnectionConstraint that describes the given connection point.
mxGraph.prototype.getConnectionPoint = function(vertex,
constraint)
Returns the nearest point in the list of absolute points or the center of the opposite terminal.
mxGraph.prototype.getConnections = function(cell,
parent)
Returns all visible edges connected to the given cell without loops.
mxGraphModel.prototype.getConnections = function(cell)
Returns all edges of the given cell without loops.
mxGraphLayout.prototype.getConstraint = function(key,
cell,
edge,
source)
Returns the constraint for the given key and cell.
mxCellRenderer.prototype.getControlBounds = function(state,
w,
h)
Returns the bounds to be used to draw the control (folding icon) of the given state.
mxGraphHierarchyEdge.prototype.getCoreCell = function()
Gets the first core edge associated with this wrapper
mxGraphHierarchyNode.prototype.getCoreCell = function()
Gets the core vertex associated with this wrapper
mxPrintPreview.prototype.getCoverPages = function()
Returns the pages to be added before the print output.
mxCellEditor.prototype.getCurrentHtmlValue = function()
Returns the current value as HTML to measure the text size.
mxEdgeSegmentHandler.prototype.getCurrentPoints = function()
Returns the current absolute points.
mxGraph.prototype.getCurrentRoot = function()
Returns the current root of the displayed cell hierarchy.
mxSvgCanvas2D.prototype.getCurrentStrokeWidth = function()
Returns the current stroke width (>= 1), ie.
getCurrentStyle: function()
Returns the current style of the specified element.
mxCellEditor.prototype.getCurrentValue = function()
Returns the current editing value.
mxShape.prototype.getCursor = function()
Returns the current cursor.
mxElbowEdgeHandler.prototype.getCursorForBend = function()
Returns the cursor to be used for the bend.
mxGraph.prototype.getCursorForCell = function(cell)
Returns the cursor value to be used for the CSS of the shape for the given cell.
mxGraph.prototype.getCursorForMouseEvent = function(me)
Returns the cursor value to be used for the CSS of the shape for the given event.
mxGraphView.prototype.getDecoratorPane = function()
Returns the DOM node that represents the topmost drawing layer.
getDefaultBundle: function(basename,
lan)
Hook for subclassers to return the URL for the special bundle.
mxStylesheet.prototype.getDefaultEdgeStyle = function()
Sets the default style for edges.
mxGraph.prototype.getDefaultParent = function()
Returns defaultParent or mxGraphView.currentRoot or the first child child of mxGraphModel.root if both are null.
mxStylesheet.prototype.getDefaultVertexStyle = function()
Returns the default style for vertices.
mxGraph.prototype.getDeletableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
mxGraphHandler.prototype.getDelta = function(me)
Returns an mxPoint that represents the vector for moving the cells for the given mxMouseEvent.
mxMorphing.prototype.getDelta = function(state)
Returns the vector between the current rendered state and the future location of the state after the display will be updated.
mxGraphModel.prototype.getDescendants = function(parent)
Returns all descendants of the given cell and the cell itself in an array.
mxGraphModel.prototype.getDirectedEdgeCount = function(cell,
outgoing,
ignoredEdge)
Returns the number of incoming or outgoing edges, ignoring the given edge.
Returns the string that should go before the HTML tag in the print preview page.
mxXmlRequest.prototype.getDocumentElement = function()
Returns the document element of the response XML document.
mxDivResizer.prototype.getDocumentHeight = function()
Hook for subclassers to return the height of the document (without scrollbars).
getDocumentScrollOrigin: function(doc)
Returns the scroll origin of the given document or the current document if no document is given.
mxDivResizer.prototype.getDocumentWidth = function()
Hook for subclassers to return the width of the document (without scrollbars).
mxGraphView.prototype.getDrawPane = function()
Returns the DOM node that represents the main drawing layer.
mxDragSource.prototype.getDropTarget = function(graph,
x,
y,
evt)
Returns the drop target for the given graph and coordinates.
mxGraph.prototype.getDropTarget = function(cells,
evt,
cell,
clone)
Returns the given cell if it is a drop target for the given cells or the nearest ancestor that may be used as a drop target for the given cells.
mxCell.prototype.getEdgeAt = function(index)
Returns the edge at the specified index in edges.
mxGraphModel.prototype.getEdgeAt = function(cell,
index)
Returns the edge of cell at the given index.
mxConnectionHandler.prototype.getEdgeColor = function(valid)
Returns the color used to draw the preview edge.
mxCell.prototype.getEdgeCount = function()
Returns the number of edges in the edge array.
mxGraphModel.prototype.getEdgeCount = function(cell)
Returns the number of distinct edges connected to the given cell.
mxParallelEdgeLayout.prototype.getEdgeId = function(edge)
Returns a unique ID for the given edge.
mxCell.prototype.getEdgeIndex = function(edge)
Returns the index of the specified edge in edges.
mxGraph.prototype.getEdges = function(cell,
parent,
incoming,
outgoing,
includeLoops,
recurse)
Returns the incoming and/or outgoing edges for the given cell.
mxGraphModel.prototype.getEdges = function(cell,
incoming,
outgoing,
includeLoops)
Returns all distinct edges connected to this cell as a new array of mxCells.
mxHierarchicalLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxSwimlaneLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxGraph.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxGraphModel.prototype.getEdgesBetween = function(source,
target,
directed)
Returns all edges between the given source and target pair.
mxHierarchicalLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxSwimlaneLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxEditor.prototype.getEdgeStyle = function ()
Returns a string identifying the style of new edges.
mxGraphView.prototype.getEdgeStyle = function(edge,
points,
source,
target)
Returns the edge style function to be used to render the given edge state.
mxGraph.prototype.getEdgeValidationError = function(edge,
source,
target)
Returns the validation error message to be displayed when inserting or changing an edges’ connectivity.
mxConnectionHandler.prototype.getEdgeWidth = function(valid)
Returns the width used to draw the preview edge.
mxCellEditor.prototype.getEditingCell = function ()
Returns the cell that is currently being edited or null if no cell is being edited.
mxGraph.prototype.getEditingValue = function(cell,
evt)
Returns the initial value for in-place editing.
mxCellEditor.prototype.getEditorBounds = function(state)
Returns the mxRectangle that defines the bounds of the editor.
mxWindow.prototype.getElement = function()
Returuns the outermost DOM node that makes up the window.
mxCodec.prototype.getElementById = function(id,
attr)
Returns the element with the given ID from document.
mxGraphView.prototype.getEmptyBounds = function()
Returns the bounds for an empty graph.
mxCellEditor.prototype.getEmptyLabelText = function (cell)
Returns the initial label value to be used of the label of the given cell is empty.
mxMouseEvent.prototype.getEvent = function()
Returns evt.
mxEventSource.prototype.getEventSource = function()
Returns eventSource.
mxGraph.prototype.getExportableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
mxObjectCodec.prototype.getFieldName = function(attributename)
Returns the fieldname for the given attributename.
mxObjectCodec.prototype.getFieldTemplate = function(obj,
fieldname,
child)
Returns the template instance for the given field.
mxGraphSelectionModel.prototype.getFirstSelectableCell = function(cells)
Returns the first selectable cell in the given array of cells.
mxGraph.prototype.getFoldableCells = function(cells,
collapse)
Returns the cells which are movable in the given array of cells.
mxGraph.prototype.getFoldingImage = function(state)
Returns the mxImage used to display the collapsed state of the specified cell state.
mxKeyHandler.prototype.getFunction = function(evt)
Returns the function associated with the given key event or null if no function is associated with the given event.
getFunctionName: function(f)
Returns the name for the given function.
mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable = function(
   layer
)
Gets the value of temp for the specified layer
mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable = function(layer)
Gets the value of temp for the specified layer
mxGraphHierarchyNode.prototype.getGeneralPurposeVariable = function(layer)
Gets the value of temp for the specified layer
mxCell.prototype.getGeometry = function()
Returns the mxGeometry that describes the geometry.
mxGraphModel.prototype.getGeometry = function(cell)
Returns the mxGeometry of the given mxCell.
mxShape.prototype.getGradientBounds = function(c,
x,
y,
w,
h)
Returns the bounding box for the gradient box for this shape.
Returns the bounding box for the gradient box for this shape.
mxGraphLayout.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxLayoutManager.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxSpaceManager.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxSwimlaneManager.prototype.getGraph = function()
Returns the graph that this manager operates on.
mxGraph.prototype.getGraphBounds = function()
Returns the bounds of the visible graph.
mxGraphView.prototype.getGraphBounds = function()
Returns graphBounds.
mxDragSource.prototype.getGraphForEvent = function(evt)
Returns the graph for the given mouse event.
mxMouseEvent.prototype.getGraphX = function()
Returns graphX.
mxMouseEvent.prototype.getGraphY = function()
Returns graphY.
mxGraph.prototype.getGridSize = function()
Returns gridSize.
mxGraphHandler.prototype.getGuideStates = function()
Creates an array of cell states which should be used as guides.
mxGuide.prototype.getGuideTolerance = function()
Returns the tolerance for the guides.
mxEdgeHandler.prototype.getHandleFillColor = function(index)
Returns the fillcolor for the handle at the given index.
mxEdgeHandler.prototype.getHandleForEvent = function(me)
Returns the index of the handle for the given event.
mxVertexHandler.prototype.getHandleForEvent = function(me)
Returns the index of the handle for the given event.
mxSelectionCellsHandler.prototype.getHandler = function(cell)
Returns the handler for the given cell.
mxCellMarker.prototype.getHotspot = function()
Returns the hotspot.
mxCell.prototype.getId = function()
Returns the Id of the cell as a string.
mxCodec.prototype.getId = function(obj)
Returns the ID of the specified object.
mxGraph.prototype.getImage = function(state)
Returns the image URL for the given cell state.
mxImageBundle.prototype.getImage = function(key)
Returns the value for the given key.
mxLabel.prototype.getImageBounds = function(x,
y,
w,
h)
Generic background painting implementation.
mxSwimlane.prototype.getImageBounds = function(x,
y,
w,
h)
Paints the swimlane vertex shape.
mxConstraintHandler.prototype.getImageForConstraint = function(state,
constraint,
point)
Returns the tolerance to be used for intersecting connection points.
mxGraph.prototype.getImageFromBundles = function(key)
Searches all imageBundles for the specified key and returns the value for the first match or null if the key is not found.
mxGraph.prototype.getImportableCells = function(cells)
Returns the cells which may be imported in the given array of cells.
mxGraph.prototype.getIncomingEdges = function(cell,
parent)
Returns the visible incoming edges for the given cell.
mxGraphModel.prototype.getIncomingEdges = function(cell)
Returns the incoming edges of the given cell without loops.
mxCell.prototype.getIndex = function(child)
Returns the index of the specified child in the child array.
mxLabel.prototype.getIndicatorBounds = function(x,
y,
w,
h)
Generic background painting implementation.
mxGraph.prototype.getIndicatorColor = function(state)
Returns the indicator color for the given cell state.
mxGraph.prototype.getIndicatorGradientColor = function(state)
Returns the indicator gradient color for the given cell state.
mxGraph.prototype.getIndicatorImage = function(state)
Returns the indicator image for the given cell state.
mxGraph.prototype.getIndicatorShape = function(state)
Returns the indicator shape for the given cell state.
mxGraphHandler.prototype.getInitialCellForEvent = function(me)
Hook to return initial cell for the given event.
mxCellEditor.prototype.getInitialValue = function(state,
trigger)
Gets the initial editing value for the given cell.
getInnerHtml: function()
Returns the inner HTML for the given node as a string or an empty string if no node was specified.
mxDictionary.prototype.getKeys = function()
Returns all keys as an array.
mxGraph.prototype.getLabel = function(cell)
Returns a string or DOM node that represents the label for the given cell.
mxCellRenderer.prototype.getLabelBounds = function(state)
Returns the bounds to be used to draw the label of the given state.
mxDoubleEllipse.prototype.getLabelBounds = function(rect)
Returns the bounds for the label.
mxShape.prototype.getLabelBounds = function(rect)
Returns the mxRectangle for the label bounds of this shape, based on the given scaled and translated bounds of the shape.
mxCellRenderer.prototype.getLabelValue = function(state)
Returns the value to be used for the label.
mxLayoutManager.prototype.getLayout = function(parent)
Returns the layout to be executed for the given graph and parent.
mxImageExport.prototype.getLinkForCellState = function(state,
canvas)
Returns the link for the given cell state and canvas.
getMainEvent: function(e)
Returns the touch or mouse event that contains the mouse coordinates.
Returns the spacing as an mxPoint.
mxCellMarker.prototype.getMarkedState = function()
Returns the markedState.
mxCellMarker.prototype.getMarkerColor = function(evt,
state,
isValid)
Returns the valid- or invalidColor depending on the value of isValid.
mxGraph.prototype.getMaximumGraphBounds = function()
Returns the bounds inside which the diagram should be kept as an mxRectangle.
mxCellEditor.prototype.getMinimumSize = function(state)
Returns the minimum width and height for editing the given state.
mxWindow.prototype.getMinimumSize = function()
Returns an mxRectangle that specifies the size for the minimized window.
mxGraph.prototype.getModel = function()
Returns the mxGraphModel that contains the cells.
mxHierarchicalLayout.prototype.getModel = function()
Returns the internal mxGraphHierarchyModel for this layout algorithm.
mxSwimlaneLayout.prototype.getModel = function()
Returns the internal mxSwimlaneModel for this layout algorithm.
mxGraph.prototype.getMovableCells = function(cells)
Returns the cells which are movable in the given array of cells.
mxEventObject.prototype.getName = function()
Returns name.
mxObjectCodec.prototype.getName = function()
Returns the name used for the nodenames and lookup of the codec when classes are encoded and nodes are decoded.
getName: function(value)
Returns the name for the given value.
mxGraphModel.prototype.getNearestCommonAncestor = function(cell1,
cell2)
Returns the nearest common ancestor for the specified cells.
mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells = function(
   layer
)
Returns the cells this cell connects to on the next layer up
mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer up
mxGraphHierarchyNode.prototype.getNextLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer up
mxGraphView.prototype.getNextPoint = function(edge,
opposite,
source)
Returns the nearest point in the list of absolute points or the center of the opposite terminal.
getNumber: function(array,
key,
defaultValue)
Returns the numeric value for the given key in the given associative array or the given default value (or 0) if the value is null.
mxCodec.prototype.getObject = function(id)
Returns the decoded object for the element with the specified ID in document.
getOffset: function(container,
scrollOffset)
Returns the offset for the specified container as an mxPoint.
mxGraph.prototype.getOpposites = function(edges,
terminal,
sources,
targets)
Returns all distinct visible opposite cells for the specified terminal on the given edges.
mxGraphModel.prototype.getOpposites = function(edges,
terminal,
sources,
targets)
Returns all opposite vertices wrt terminal for the given edges, only returning sources and/or targets as specified.
mxGraphModel.prototype.getOrigin = function(cell)
Returns the absolute, accumulated origin for the children inside the given parent as an mxPoint.
mxMorphing.prototype.getOriginForCell = function(cell)
Returns the top, left corner of the given cell.
getOuterHtml: function()
Returns the outer HTML for the given node as a string or an empty string if no node was specified.
mxGraph.prototype.getOutgoingEdges = function(cell,
parent)
Returns the visible outgoing edges for the given cell.
mxGraphModel.prototype.getOutgoingEdges = function(cell)
Returns the outgoing edges of the given cell without loops.
mxGraph.prototype.getOutlineConstraint = function(point,
terminalState,
me)
Returns the constraint used to connect to the outline of the given state.
mxOutline.prototype.getOutlineOffset = function(scale)
Returns the offset for drawing the outline graph.
mxGraph.prototype.getOverlap = function(cell)
Returns a decimal number representing the amount of the width and height of the given cell that is allowed to overlap its parent.
mxGraphView.prototype.getOverlayPane = function()
Returns the DOM node that represents the layer above the drawing layer.
mxCellState.prototype.getPaintBounds = function ()
Returns the unscaled, untranslated paint bounds.
mxCell.prototype.getParent = function()
Returns the cell’s parent.
mxGraphModel.prototype.getParent = function(cell)
Returns the parent of the given cell.
mxGraphLayout.prototype.getParentOffset = function(parent)
Determines the offset of the given parent to the parent of the layout
getParentPath: function(path)
Returns the path for the parent of the cell represented by the given path.
mxGraphModel.prototype.getParents = function(cells)
Returns an array that represents the set (no duplicates) of all parents for the given array of cells.
mxStackLayout.prototype.getParentSize = function(parent)
Returns the size for the parent container or the size of the graph container if the parent is a layer or the root of the model.
mxCellState.prototype.getPerimeterBounds = function (border,
bounds)
Returns the mxRectangle that should be used as the perimeter of the cell.
mxGraphView.prototype.getPerimeterBounds = function(terminal,
border)
Returns the perimeter bounds for the given terminal, edge pair as an mxRectangle.
mxGraphView.prototype.getPerimeterFunction = function(state)
Returns the perimeter function for the given state.
mxGraphView.prototype.getPerimeterPoint = function(terminal,
next,
orthogonal,
border)
Returns an mxPoint that defines the location of the intersection point between the perimeter and the line between the center of the shape and the given point.
mxGraphView.prototype.getPoint = function(state,
geometry)
Returns the absolute point on the edge for the given relative mxGeometry as an mxPoint.
mxRectangle.prototype.getPoint = function()
Returns the top, left corner as a new mxPoint.
mxEdgeHandler.prototype.getPointForEvent = function(me)
Returns the point for the given event.
mxGraph.prototype.getPointForEvent = function(evt,
addOffset)
Returns an mxPoint representing the given event in the unscaled, non-translated coordinate space of container and applies the grid.
mxHandle.prototype.getPosition = function(bounds)
Hook for subclassers to return the current position of the handle.
mxGraph.prototype.getPreferredPageSize = function(bounds,
width,
height)
Returns the preferred size of the background page if preferPageSize is true.
mxGraph.prototype.getPreferredSizeForCell = function(cell)
Returns the preferred width and height of the given mxCell as an mxRectangle.
Returns a pretty printed string that represents the XML tree for the given node.
mxGraphHandler.prototype.getPreviewBounds = function(cells)
Returns the mxRectangle used as the preview bounds for moving the given cells.
mxEdgeSegmentHandler.prototype.getPreviewPoints = function(point)
Updates the given preview state taking into account the state of the constraint handler.
mxEdgeHandler.prototype.getPreviewPoints = function(pt)
Updates the given preview state taking into account the state of the constraint handler.
mxEdgeHandler.prototype.getPreviewTerminalState = function(me)
Updates the given preview state taking into account the state of the constraint handler.
mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells = function(
   layer
)
Returns the cells this cell connects to on the next layer down
mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer down
mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer down
mxEventObject.prototype.getProperties = function()
Returns properties.
mxEventObject.prototype.getProperty = function(key)
Returns the property for the given key.
mxCircleLayout.prototype.getRadius = function(count,
max)
Returns the radius to be used for the given vertex count.
mxGraphHierarchyNode.prototype.getRankValue = function(layer)
Returns the integer value of the layer that this node resides in
mxGraphView.prototype.getRelativePoint = function(edgeState,
x,
y)
Gets the relative point that describes the given, absolute label position for the given edge state.
mxGraph.prototype.getRemovedCellsForChanges = function(changes)
Returns the cells that have been removed from the model.
mxGraphModel.prototype.getRoot = function(cell)
Returns the root of the model or the topmost parent of the given cell.
mxPrintPreview.prototype.getRoot = function()
Returns the root cell for painting the graph.
mxEditor.prototype.getRootTitle = function ()
Returns the string value of the root cell in mxGraph.model.
getRotatedPoint: function(pt,
cos,
sin,
c)
Rotates the given point by the given cos and sin.
mxPolyline.prototype.getRotation = function()
Returns 0.
mxShape.prototype.getRotation = function()
Returns the rotation from the style.
mxHandle.prototype.getRotation = function()
Returns the rotation defined in the style of the cell.
mxGraphView.prototype.getRoutingCenterX = function (state)
Returns the x-coordinate of the center point for automatic routing.
mxGraphView.prototype.getRoutingCenterY = function (state)
Returns the y-coordinate of the center point for automatic routing.
mxGraphView.prototype.getScale = function()
Returns the scale.
getScaleForPageCount: function(pageCount,
graph,
pageFormat,
border)
Returns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.
getScrollOrigin: function(node)
Returns the top, left corner of the viewrect as an mxPoint.
mxVertexHandler.prototype.getSelectionBounds = function(state)
Returns the mxRectangle that defines the bounds of the selection border.
mxGraph.prototype.getSelectionCell = function()
Returns the first cell from the array of selected mxCells.
mxGraph.prototype.getSelectionCells = function()
Returns the array of selected mxCells.
mxGraph.prototype.getSelectionCellsForChanges = function(changes)
Returns the cells to be selected for the given array of changes.
mxEdgeHandler.prototype.getSelectionColor = function()
Returns mxConstants.EDGE_SELECTION_COLOR.
mxVertexHandler.prototype.getSelectionColor = function()
Returns mxConstants.VERTEX_SELECTION_COLOR.
mxGraph.prototype.getSelectionCount = function()
Returns the number of selected cells.
mxGraph.prototype.getSelectionModel = function()
Returns the mxGraphSelectionModel that contains the selection.
mxEdgeHandler.prototype.getSelectionPoints = function(state)
Returns the list of points that defines the selection stroke.
mxEdgeHandler.prototype.getSelectionStrokeWidth = function()
Returns mxConstants.EDGE_SELECTION_STROKEWIDTH.
mxVertexHandler.prototype.getSelectionStrokeWidth = function()
Returns mxConstants.VERTEX_SELECTION_STROKEWIDTH.
mxCellRenderer.prototype.getShape = function(name)
Returns the shape for the given name from defaultShapes.
mxCellRenderer.prototype.getShapeConstructor = function(state)
Returns the constructor to be used for creating the shape.
mxPolyline.prototype.getShapeRotation = function()
Returns 0.
mxShape.prototype.getShapeRotation = function()
Returns the actual rotation of the shape.
mxText.prototype.getShapeRotation = function()
Returns 0 to avoid using rotation in the canvas via updateTransform.
mxCellRenderer.prototype.getShapesForState = function(state)
Returns the mxShapes for the given cell state in the order in which they should appear in the DOM.
getSizeForString: function(text,
fontSize,
fontFamily,
textWidth)
Returns an mxRectangle with the size (width and height in pixels) of the given string.
mxEdgeHandler.prototype.getSnapToTerminalTolerance = function()
Returns the tolerance for the guides.
getSource: function(evt)
Returns the event’s target or srcElement depending on the browser.
mxMouseEvent.prototype.getSource = function()
Returns the target DOM element using mxEvent.getSource for evt.
mxOutline.prototype.getSourceContainerSize = function()
Returns the size of the source container.
mxConnectionHandler.prototype.getSourcePerimeterPoint = function(state,
next,
me)
Hook to update the icon position(s) based on a mouseOver event.
mxText.prototype.getSpacing = function()
Returns the spacing as an mxPoint.
getSpecialBundle: function(basename,
lan)
Hook for subclassers to return the URL for the special bundle.
mxGraph.prototype.getStartSize = function(swimlane)
Returns the start size of the given swimlane, that is, the width or height of the part that contains the title, depending on the horizontal style.
mxCellMarker.prototype.getState = function(me)
Uses getCell, getStateToMark and intersects to return the mxCellState for the given mxMouseEvent.
mxGraphView.prototype.getState = function(cell,
create)
Returns the mxCellState for the given cell.
mxMouseEvent.prototype.getState = function()
Returns state.
Returns the state for the given touch event.
mxGraphView.prototype.getStates = function()
Returns states.
mxCellMarker.prototype.getStateToMark = function(state)
Returns the mxCellState to be marked for the given mxCellState under the mouse.
mxXmlRequest.prototype.getStatus = function()
Returns the status as a number, eg.
getStencil: function(name)
Returns the mxStencil for the given name.
codec.getStringValue = function(key,
value)
Returns the string for encoding the given value.
mxCell.prototype.getStyle = function()
Returns a string that describes the style.
mxGraphModel.prototype.getStyle = function(cell)
Returns the style of the given mxCell.
getStylename: function(style)
Returns the stylename in a style of the form [(stylename|key=value);] or an empty string if the given style does not contain a stylename.
getStylenames: function(style)
Returns the stylenames in a style of the form [(stylename|key=value);] or an empty array if the given style does not contain any stylenames.
mxGraph.prototype.getStylesheet = function()
Returns the mxStylesheet that defines the style.
mxSvgCanvas2D.prototype.getSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxImageShape.prototype.getSvgScreenOffset = function()
Disables offset in IE9 for crisper image output.
mxShape.prototype.getSvgScreenOffset = function()
Returns 0, or 0.5 if strokewidth % 2 == 1.
mxText.prototype.getSvgScreenOffset = function()
Disables offset in IE9 for crisper image output.
mxGraph.prototype.getSwimlane = function(cell)
Returns the nearest ancestor of the given cell which is a swimlane, or the given cell, if it is itself a swimlane.
mxGraph.prototype.getSwimlaneAt = function (x,
y,
parent)
Returns the bottom-most swimlane that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
mxForm.prototype.getTable = function()
Returns the table that contains this form.
mxConnectionHandler.prototype.getTargetPerimeterPoint = function(state,
me)
Returns the perimeter point for the given target state.
mxEditor.prototype.getTemplate = function (name)
Returns the template for the given name.
mxCell.prototype.getTerminal = function(source)
Returns the source or target terminal.
mxGraphModel.prototype.getTerminal = function(edge,
isSource)
Returns the source or target mxCell of the given edge depending on the value of the boolean parameter.
mxGraph.prototype.getTerminalForPort = function(cell,
source)
Returns the terminal to be used for a given port.
mxGeometry.prototype.getTerminalPoint = function(isSource)
Returns the mxPoint representing the source or target point of this edge.
mxGraphView.prototype.getTerminalPort = function(state,
terminal,
source)
Returns an mxCellState that represents the source or target terminal or port for the given edge.
mxXmlRequest.prototype.getText = function()
Returns the response as a string.
getTextContent: function(node)
Returns the text content of the specified node.
mxShape.prototype.getTextRotation = function()
Returns the rotation for the text label.
mxText.prototype.getTextRotation = function()
Returns the rotation for the text label of the corresponding shape.
mxCellRenderer.prototype.getTextScale = function(state)
Returns the scaling used for the label of the given state
mxEditor.prototype.getTitle = function ()
Returns the string value for the current root of the diagram.
mxConstraintHandler.prototype.getTolerance = function(me)
Returns the tolerance to be used for intersecting connection points.
mxGraph.prototype.getTolerance = function()
Returns tolerance.
mxGraph.prototype.getTooltip = function(state,
node,
x,
y)
Returns the string or DOM node that represents the tooltip for the given state, node and coordinate pair.
mxGraph.prototype.getTooltipForCell = function(cell)
Returns the string or DOM node to be used as the tooltip for the given cell.
mxEdgeSegmentHandler.prototype.getTooltipForNode = function(node)
Returns no tooltips.
mxElbowEdgeHandler.prototype.getTooltipForNode = function(node)
Returns the tooltip for the given node.
mxGraphModel.prototype.getTopmostCells = function(cells)
Returns the topmost cells of the hierarchy in an array that contains no descendants for each mxCell that it contains.
mxHandle.prototype.getTotalRotation = function()
Returns the rotation from the style and the rotation from the direction of the cell.
mxGraphView.prototype.getTranslate = function()
Returns the translate.
mxOutline.prototype.getTranslateForEvent = function(me)
Gets the translate for the given mouse event.
mxGraph.prototype.getTranslateForRoot = function(cell)
Returns the translation to be used if the given cell is the root cell as an mxPoint.
mxEditor.prototype.getUrlImage = function ()
Returns the URL to create the image with.
mxEditor.prototype.getUrlPost = function ()
Returns the URL to post the diagram to.
mxCellMarker.prototype.getValidState = function()
Returns the validState.
mxCell.prototype.getValue = function()
Returns the user object of the cell.
mxGraphModel.prototype.getValue = function(cell)
Returns the user object of the given mxCell using mxCell.getValue.
getValue: function(name)
Returns the value associated with the given name.
getValue: function(array,
key,
defaultValue)
Returns the value for the given key in the given associative array or the given default value if the value is null.
mxDictionary.prototype.getValues = function()
Returns all values as an array.
mxGraphLayout.prototype.getVertexBounds = function(cell)
Returns an mxRectangle that defines the bounds of the given cell or the bounding box if useBoundingBox is true.
mxGraph.prototype.getVerticalAlign = function(state)
Returns the vertical alignment for the given cell state.
mxGraph.prototype.getView = function()
Returns the mxGraphView that contains the mxCellStates.
getViewXml: function(graph,
scale,
cells,
x0,
y0)
mxCellState.prototype.getVisibleTerminal = function (source)
Returns the visible source or target terminal cell.
mxGraphView.prototype.getVisibleTerminal = function(edge,
source)
Returns the nearest ancestor terminal that is visible.
mxHierarchicalLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxSwimlaneLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxCellState.prototype.getVisibleTerminalState = function (source)
Returns the visible source or target terminal state.
Returns a VML dash pattern for the current dashPattern.
mxPrintPreview.prototype.getWindow = function()
Returns wnd.
mxGraphAbstractHierarchyCell.prototype.getX = function(layer)
Gets the value of x on the specified layer
mxMouseEvent.prototype.getX = function()
Returns evt.clientX.
mxWindow.prototype.getX = function()
Returns the current position on the x-axis.
getXml: function(node,
linefeed)
Returns the XML content of the specified node.
mxXmlRequest.prototype.getXml = function()
Returns the response as an XML document.
mxMouseEvent.prototype.getY = function()
Returns evt.clientY.
mxWindow.prototype.getY = function()
Returns the current position on the y-axis.
mxDragSource.prototype.graphContainsEvent = function(graph,
evt)
Returns true if the given graph contains the given event.
mxAutoSaveManager.prototype.graphModelChanged = function(changes)
Invoked when the graph model has changed.
mxGraph.prototype.graphModelChanged = function(changes)
Called when the graph model changes.
Renderhint to be used for the outline graph.
mxEditor.prototype.groupCells = function ()
Invokes createGroup to create a new group cell and the invokes mxGraph.groupCells, using the grid size of the graph as the spacing in the group’s content area.
mxGraph.prototype.groupCells = function(group,
border,
cells)
Adds the cells into the given group.
mxRectangle.prototype.grow = function(amount)
Grows the rectangle by the given amount, that is, this method subtracts the given amount from the x- and y-coordinates and adds twice the amount to the width and height.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions8.html b/docs/js-api/index/Functions8.html index b06bc9dad..7960abb9c 100644 --- a/docs/js-api/index/Functions8.html +++ b/docs/js-api/index/Functions8.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 handlingResize, mxDivResizer
 hasScrollbars, mxUtils
 hasValidState, mxCellMarker
 HexagonPerimeter, mxPerimeter
 hide
 hideHandles
 hideMenu, mxPopupMenu
 hideProperties, mxEditor
 hideSizers, mxVertexHandler
 hideSubmenu, mxPopupMenu
 hideTooltip, mxTooltipHandler
 hitsSwimlaneContent, mxGraph
 home, mxGraph
 horizontalLayout, mxCompactTreeLayout
 htmlEntities, mxUtils
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 handlingResize, mxDivResizer
 hasScrollbars, mxUtils
 hasValidState, mxCellMarker
 HexagonPerimeter, mxPerimeter
 hide
 hideHandles
 hideMenu, mxPopupMenu
 hideProperties, mxEditor
 hideSizers, mxVertexHandler
 hideSubmenu, mxPopupMenu
 hideTooltip, mxTooltipHandler
 hitsSwimlaneContent, mxGraph
 home, mxGraph
 horizontalLayout, mxCompactTreeLayout
 htmlEntities, mxUtils
-
Boolean specifying if the width should be updated.
hasScrollbars: function(node)
Returns true if the overflow CSS property of the given node is either scroll or auto.
mxCellMarker.prototype.hasValidState = function()
Returns true if validState is not null.
HexagonPerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a hexagon perimeter.
mxCellHighlight.prototype.hide = function()
Resets the state of the cell marker.
mxGuide.prototype.hide = function()
Hides all current guides.
mxTooltipHandler.prototype.hide = function()
Hides the tooltip and resets the timer.
mxWindow.prototype.hide = function()
Hides the window.
Shortcut to hideSizers.
Shortcut to hideSizers.
mxPopupMenu.prototype.hideMenu = function()
Removes the menu and all submenus.
mxEditor.prototype.hideProperties = function ()
Hides the properties dialog.
mxVertexHandler.prototype.hideSizers = function()
Hides all sizers except.
mxPopupMenu.prototype.hideSubmenu = function(parent)
Removes all submenus inside the given parent.
mxTooltipHandler.prototype.hideTooltip = function()
Hides the tooltip.
mxGraph.prototype.hitsSwimlaneContent = function(swimlane,
x,
y)
Returns true if the given coordinate pair is inside the content are of the given swimlane.
mxGraph.prototype.home = function()
Uses the root of the model as the root of the displayed cell hierarchy and selects the previous root.
mxCompactTreeLayout.prototype.horizontalLayout = function(node,
x0,
y0,
bounds)
htmlEntities: function(s,
newline)
Replaces characters (less than, greater than, newlines and quotes) with their HTML entities in the given string and returns the result.
+
Boolean specifying if the width should be updated.
hasScrollbars: function(node)
Returns true if the overflow CSS property of the given node is either scroll or auto.
mxCellMarker.prototype.hasValidState = function()
Returns true if validState is not null.
HexagonPerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a hexagon perimeter.
mxCellHighlight.prototype.hide = function()
Resets the state of the cell marker.
mxGuide.prototype.hide = function()
Hides all current guides.
mxTooltipHandler.prototype.hide = function()
Hides the tooltip and resets the timer.
mxWindow.prototype.hide = function()
Hides the window.
Shortcut to hideSizers.
Shortcut to hideSizers.
mxPopupMenu.prototype.hideMenu = function()
Removes the menu and all submenus.
mxEditor.prototype.hideProperties = function ()
Hides the properties dialog.
mxVertexHandler.prototype.hideSizers = function()
Hides all sizers except.
mxPopupMenu.prototype.hideSubmenu = function(parent)
Removes all submenus inside the given parent.
mxTooltipHandler.prototype.hideTooltip = function()
Hides the tooltip.
mxGraph.prototype.hitsSwimlaneContent = function(swimlane,
x,
y)
Returns true if the given coordinate pair is inside the content are of the given swimlane.
mxGraph.prototype.home = function()
Uses the root of the model as the root of the displayed cell hierarchy and selects the previous root.
mxCompactTreeLayout.prototype.horizontalLayout = function(node,
x0,
y0,
bounds)
htmlEntities: function(s,
newline)
Replaces characters (less than, greater than, newlines and quotes) with their HTML entities in the given string and returns the result.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Functions9.html b/docs/js-api/index/Functions9.html index 7d7533cf3..2360d2927 100644 --- a/docs/js-api/index/Functions9.html +++ b/docs/js-api/index/Functions9.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
I
 image
 importCells, mxGraph
 importNode, mxUtils
 include, mxClient
 indexOf, mxUtils
 indexOfStylename, mxUtils
 info, mxLog
 init
 initBend, mxEdgeHandler
 initControl, mxCellRenderer
 initialCoords, mxCoordinateAssignment
 initializeLabel, mxCellRenderer
 initializeOverlay, mxCellRenderer
 initializeShape, mxCellRenderer
 initialRank
 initShape, mxVertexHandler
 insert
 insertBackgroundImage, mxPrintPreview
 insertEdge
 insertIntoGraph, mxCodec
 insertStateAfter, mxCellRenderer
 insertVertex, mxGraph
 installChangeHandler, mxEditor
 installCloseHandler, mxWindow
 installDblClickHandler, mxEditor
 installDrillHandler, mxEditor
 installDropHandler, mxDefaultToolbar
 installInsertHandler, mxEditor
 installListeners
 installMaximizeHandler, mxWindow
 installMinimizeHandler, mxWindow
 installMoveHandler, mxWindow
 installOverlayListeners, mxCellRenderer
 installUndoHandler, mxEditor
 intersection, mxUtils
 intersects
 invalidate, mxGraphView
 invert, mxGraphHierarchyEdge
 isActive
 isAddEnabled, mxSwimlaneManager
 isAddPointEvent, mxEdgeHandler
 isAllowDanglingEdges, mxGraph
 isAllowEval, mxGraphView
 isAllowLoops, mxGraph
 isAllowOverlapParent, mxGraph
 isAltDown, mxEvent
 isAncestor
 isAncestorNode, mxUtils
 isAutoSizeCell, mxGraph
 isAutoSizeCells, mxGraph
 isBinary, mxXmlRequest
 isBooleanAttribute, mxObjectCodec
 isBrowserSupported, mxClient
 isBubbling, mxLayoutManager
 isCellBendable, mxGraph
 isCellCloneable, mxGraph
 isCellCodec
 isCellCollapsed
 isCellConnectable, mxGraph
 isCellDeletable, mxGraph
 isCellDisconnectable, mxGraph
 isCellEditable, mxGraph
 isCellFoldable, mxGraph
 isCellHorizontal, mxSwimlaneManager
 isCellIgnored, mxSpaceManager
 isCellLocked, mxGraph
 isCellMovable, mxGraph
 isCellResizable, mxGraph
 isCellRotatable, mxGraph
 isCellsBendable, mxGraph
 isCellsCloneable, mxGraph
 isCellsDeletable, mxGraph
 isCellsDisconnectable, mxGraph
 isCellsEditable, mxGraph
 isCellSelectable, mxGraph
 isCellSelected, mxGraph
 isCellShiftable, mxSpaceManager
 isCellsLocked, mxGraph
 isCellsMovable, mxGraph
 isCellsResizable, mxGraph
 isCellsSelectable, mxGraph
 isCellVisible, mxGraph
 isCloneEnabled, mxGraphHandler
 isCloneEvent, mxGraph
 isCloneInvalidEdges, mxGraph
 isCollapsed
 isConnectable
 isConnectableCell
 isConnectableEdges, mxGraph
 isConnecting, mxConnectionHandler
 isConstrainChild, mxGraph
 isConstrainChildren, mxGraph
 isConstrainChildrenOnResize, mxGraph
 isConstrainedEvent
 isConsumed
 isContainerEvent, mxGraphView
 isControlDown
 isCreateIds, mxGraphModel
 isCreateTarget, mxConnectionHandler
 isDelayedSelection, mxGraphHandler
 isDisconnectOnMove, mxGraph
 isDropEnabled, mxGraph
 isEdge
 isEdgeIgnored, mxGraphLayout
 isEdgeLabelsMovable, mxGraph
 isEdgeValid, mxGraph
 isEditing, mxGraph
 isEmpty
 isEnabled
 isEnabledForEvent, mxGuide
 isEnterStopsCellEditing, mxGraph
 isEscapeEnabled, mxGraph
 isEventIgnored
 isEventsEnabled, mxEventSource
 isEventSource, mxCellEditor
 isEventSourceIgnored, mxGraph
 isExcluded
 isExtendParent, mxGraph
 isExtendParents
 isExtendParentsOnAdd, mxGraph
 isForcePanningEvent, mxPanningHandler
 isForceRubberbandEvent, mxRubberband
 isGraphEvent, mxKeyHandler
 isGridEnabled
 isGridEnabledEvent, mxGraph
 isGuidesEnabled, mxDragSource
 isHandleEnabled, mxEdgeHandler
 isHandleVisible, mxEdgeHandler
 isHideLabel, mxCellEditor
 isHideOnHover, mxTooltipHandler
 isHorizontal
 isHotspotEnabled, mxCellMarker
 isHtmlAllowed
 isHtmlLabel, mxGraph
 isHtmlLabels, mxGraph
 isHtmlRequired, mxVertexHandler
 isImmediateConnectSource, mxConnectionHandler
 isInvokesStopCellEditing, mxGraph
 isKeepFocusEvent, mxConstraintHandler
 isLabelClipped, mxGraph
 isLabelEvent, mxCellRenderer
 isLabelMovable, mxGraph
 isLanguageSupported, mxResources
 isLayer, mxGraphModel
 isLeftMouseButton, mxEvent
 isLivePreviewBorder, mxVertexHandler
 isLoop, mxGraph
 isMenuShowing, mxPopupMenu
 isMetaDown, mxEvent
 isMiddleMouseButton, mxEvent
 isModified
 isMouseEvent, mxEvent
 isMoveEnabled, mxGraphHandler
 isMoveIconToFrontForState, mxConnectionHandler
 isMultigraph, mxGraph
 isMultiTouchEvent, mxEvent
 isNaN, mxUtils
 isNode, mxUtils
 isNumeric, mxUtils
 isNumericAttribute, mxObjectCodec
 isOrthogonal, mxGraph
 isOutlineConnectEvent
 isPaintBoundsInverted
 isPanningEnabled, mxPanningHandler
 isPanningTrigger, mxPanningHandler
 isParseVml
 isPinchEnabled, mxPanningHandler
 isPopupTrigger
 isPort
 isPortsEnabled, mxGraph
 isPropertiesVisible, mxEditor
 isReady, mxXmlRequest
 isRecursiveResize, mxGraph
 isReference
 isRelativeUrl, mxUrlConverter
 isRemoveCellsFromParent, mxGraphHandler
 isRemovePointEvent, mxEdgeHandler
 isRendering, mxGraphView
 isResizable, mxWindow
 isResizeContainer, mxGraph
 isResizeEnabled, mxSwimlaneManager
 isRightMouseButton, mxEvent
 isRoot, mxGraphModel
 isRotationHandleVisible, mxVertexHandler
 isRunning, mxAnimation
 isScrollEvent, mxGraphView
 isSelected, mxGraphSelectionModel
 isSelectEnabled, mxGraphHandler
 isSelectionDashed
 isSelectionEmpty, mxGraph
 isSelectOnPopup, mxPopupMenuHandler
 isSelectText, mxCellEditor
 isShapeEvent, mxCellRenderer
 isShiftDown, mxEvent
 isShiftDownwards, mxSpaceManager
 isShiftRightwards, mxSpaceManager
 isSignificant, mxUndoableEdit
 isSingleSelection, mxGraphSelectionModel
 isSizerVisible, mxVertexHandler
 isSnapToTerminalsEvent, mxEdgeHandler
 isSource, mxMouseEvent
 isSplitEnabled, mxGraph
 isSplitTarget, mxGraph
 isStartEvent, mxConnectionHandler
 isStateIgnored, mxConstraintHandler
 isStopEditingEvent, mxCellEditor
 isStopEvent, mxConnectionHandler
 isSwimlane, mxGraph
 isSwimlaneIgnored, mxSwimlaneManager
 isSwimlaneNesting, mxGraph
 isSwimlaneSelectionEnabled, mxGraph
 isSyntheticEventIgnored, mxGraph
 isTerminalPointMovable, mxGraph
 isToggleEvent, mxGraph
 isTouchEvent, mxEvent
 isValidAncestor, mxGraph
 isValidConnection, mxGraph
 isValidDropTarget, mxGraph
 isValidRoot, mxGraph
 isValidSource
 isValidState, mxCellMarker
 isValidTarget
 isVertex
 isVertexIgnored
 isVertexLabelsMovable, mxGraph
 isVertexMovable, mxGraphLayout
 isVirtualBendsEnabled, mxEdgeHandler
 isVisible
 isVml, mxUtils
 isWrapping, mxGraph
+
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
I
 image
 importCells, mxGraph
 importNode, mxUtils
 include, mxClient
 indexOf, mxUtils
 indexOfStylename, mxUtils
 info, mxLog
 init
 initBend, mxEdgeHandler
 initControl, mxCellRenderer
 initialCoords, mxCoordinateAssignment
 initializeLabel, mxCellRenderer
 initializeOverlay, mxCellRenderer
 initializeShape, mxCellRenderer
 initialRank
 initShape, mxVertexHandler
 insert
 insertBackgroundImage, mxPrintPreview
 insertEdge
 insertIntoGraph, mxCodec
 insertStateAfter, mxCellRenderer
 insertVertex, mxGraph
 installChangeHandler, mxEditor
 installCloseHandler, mxWindow
 installDblClickHandler, mxEditor
 installDrillHandler, mxEditor
 installDropHandler, mxDefaultToolbar
 installInsertHandler, mxEditor
 installListeners
 installMaximizeHandler, mxWindow
 installMinimizeHandler, mxWindow
 installMoveHandler, mxWindow
 installOverlayListeners, mxCellRenderer
 installUndoHandler, mxEditor
 intersection, mxUtils
 intersects
 invalidate, mxGraphView
 invert, mxGraphHierarchyEdge
 isActive
 isAddEnabled, mxSwimlaneManager
 isAddPointEvent, mxEdgeHandler
 isAllowDanglingEdges, mxGraph
 isAllowEval, mxGraphView
 isAllowLoops, mxGraph
 isAllowOverlapParent, mxGraph
 isAltDown, mxEvent
 isAncestor
 isAncestorNode, mxUtils
 isAutoSizeCell, mxGraph
 isAutoSizeCells, mxGraph
 isBinary, mxXmlRequest
 isBooleanAttribute, mxObjectCodec
 isBrowserSupported, mxClient
 isBubbling, mxLayoutManager
 isCellBendable, mxGraph
 isCellCloneable, mxGraph
 isCellCodec
 isCellCollapsed
 isCellConnectable, mxGraph
 isCellDeletable, mxGraph
 isCellDisconnectable, mxGraph
 isCellEditable, mxGraph
 isCellFoldable, mxGraph
 isCellHorizontal, mxSwimlaneManager
 isCellIgnored, mxSpaceManager
 isCellLocked, mxGraph
 isCellMovable, mxGraph
 isCellResizable, mxGraph
 isCellRotatable, mxGraph
 isCellsBendable, mxGraph
 isCellsCloneable, mxGraph
 isCellsDeletable, mxGraph
 isCellsDisconnectable, mxGraph
 isCellsEditable, mxGraph
 isCellSelectable, mxGraph
 isCellSelected, mxGraph
 isCellShiftable, mxSpaceManager
 isCellsLocked, mxGraph
 isCellsMovable, mxGraph
 isCellsResizable, mxGraph
 isCellsSelectable, mxGraph
 isCellVisible, mxGraph
 isCloneEnabled, mxGraphHandler
 isCloneEvent, mxGraph
 isCloneInvalidEdges, mxGraph
 isCollapsed
 isConnectable
 isConnectableCell
 isConnectableEdges, mxGraph
 isConnecting, mxConnectionHandler
 isConstrainChild, mxGraph
 isConstrainChildren, mxGraph
 isConstrainChildrenOnResize, mxGraph
 isConstrainedEvent
 isConsumed
 isContainerEvent, mxGraphView
 isControlDown
 isCreateIds, mxGraphModel
 isCreateTarget, mxConnectionHandler
 isDelayedSelection, mxGraphHandler
 isDisconnectOnMove, mxGraph
 isDropEnabled, mxGraph
 isEdge
 isEdgeIgnored, mxGraphLayout
 isEdgeLabelsMovable, mxGraph
 isEdgeValid, mxGraph
 isEditing, mxGraph
 isEmpty
 isEnabled
 isEnabledForEvent, mxGuide
 isEnterStopsCellEditing, mxGraph
 isEscapeEnabled, mxGraph
 isEventIgnored
 isEventsEnabled, mxEventSource
 isEventSource, mxCellEditor
 isEventSourceIgnored, mxGraph
 isExcluded
 isExtendParent, mxGraph
 isExtendParents
 isExtendParentsOnAdd, mxGraph
 isForcePanningEvent, mxPanningHandler
 isForceRubberbandEvent, mxRubberband
 isGraphEvent, mxKeyHandler
 isGridEnabled
 isGridEnabledEvent, mxGraph
 isGuidesEnabled, mxDragSource
 isHandleEnabled, mxEdgeHandler
 isHandleVisible, mxEdgeHandler
 isHideLabel, mxCellEditor
 isHideOnHover, mxTooltipHandler
 isHorizontal
 isHotspotEnabled, mxCellMarker
 isHtmlAllowed
 isHtmlLabel, mxGraph
 isHtmlLabels, mxGraph
 isHtmlRequired, mxVertexHandler
 isImmediateConnectSource, mxConnectionHandler
 isInvokesStopCellEditing, mxGraph
 isKeepFocusEvent, mxConstraintHandler
 isLabelClipped, mxGraph
 isLabelEvent, mxCellRenderer
 isLabelMovable, mxGraph
 isLanguageSupported, mxResources
 isLayer, mxGraphModel
 isLeftMouseButton, mxEvent
 isLivePreviewBorder, mxVertexHandler
 isLoop, mxGraph
 isMenuShowing, mxPopupMenu
 isMetaDown, mxEvent
 isMiddleMouseButton, mxEvent
 isModified
 isMouseEvent, mxEvent
 isMoveEnabled, mxGraphHandler
 isMoveIconToFrontForState, mxConnectionHandler
 isMultigraph, mxGraph
 isMultiTouchEvent, mxEvent
 isNaN, mxUtils
 isNode, mxUtils
 isNumeric, mxUtils
 isNumericAttribute, mxObjectCodec
 isOrthogonal, mxGraph
 isOutlineConnectEvent
 isPaintBoundsInverted
 isPanningEnabled, mxPanningHandler
 isPanningTrigger, mxPanningHandler
 isParseVml
 isPinchEnabled, mxPanningHandler
 isPopupTrigger
 isPort
 isPortsEnabled, mxGraph
 isPropertiesVisible, mxEditor
 isReady, mxXmlRequest
 isRecursiveResize, mxGraph
 isReference
 isRelativeUrl, mxUrlConverter
 isRemoveCellsFromParent, mxGraphHandler
 isRemovePointEvent, mxEdgeHandler
 isRendering, mxGraphView
 isResizable, mxWindow
 isResizeContainer, mxGraph
 isResizeEnabled, mxSwimlaneManager
 isRightMouseButton, mxEvent
 isRoot, mxGraphModel
 isRotationHandleVisible, mxVertexHandler
 isRunning, mxAnimation
 isScrollEvent, mxGraphView
 isSelected, mxGraphSelectionModel
 isSelectEnabled, mxGraphHandler
 isSelectionDashed
 isSelectionEmpty, mxGraph
 isSelectOnPopup, mxPopupMenuHandler
 isSelectText, mxCellEditor
 isShapeEvent, mxCellRenderer
 isShiftDown, mxEvent
 isShiftDownwards, mxSpaceManager
 isShiftRightwards, mxSpaceManager
 isSignificant, mxUndoableEdit
 isSingleSelection, mxGraphSelectionModel
 isSizerVisible, mxVertexHandler
 isSnapToTerminalsEvent, mxEdgeHandler
 isSource, mxMouseEvent
 isSplitEnabled, mxGraph
 isSplitTarget, mxGraph
 isStartEvent, mxConnectionHandler
 isStateIgnored, mxConstraintHandler
 isStopEditingEvent, mxCellEditor
 isStopEvent, mxConnectionHandler
 isSwimlane, mxGraph
 isSwimlaneIgnored, mxSwimlaneManager
 isSwimlaneNesting, mxGraph
 isSwimlaneSelectionEnabled, mxGraph
 isSyntheticEventIgnored, mxGraph
 isTerminalPointMovable, mxGraph
 isToggleEvent, mxGraph
 isTouchEvent, mxEvent
 isValidAncestor, mxGraph
 isValidConnection, mxGraph
 isValidDropTarget, mxGraph
 isValidRoot, mxGraph
 isValidSource
 isValidState, mxCellMarker
 isValidTarget
 isVertex
 isVertexIgnored
 isVertexLabelsMovable, mxGraph
 isVertexMovable, mxGraphLayout
 isVirtualBendsEnabled, mxEdgeHandler
 isVisible
 isVml, mxUtils
 isWrapping, mxGraph
-
mxSvgCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Paints an image.
mxXmlCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Paints an image.
mxGraph.prototype.importCells = function(cells,
dx,
dy,
target,
evt)
Clones and inserts the given cells into the graph using the move method and returns the inserted cells.
importNode: function(doc,
node,
allChildren)
Cross browser implementation for document.importNode.
include: function(src)
Dynamically adds a script node to the document header.
indexOf: function(array,
obj)
Returns the index of obj in array or -1 if the array does not contain the given object.
indexOfStylename: function(style,
stylename)
Returns the index of the given stylename in the given style.
info: function()
Writes the current navigator information to the console.
mxCellEditor.prototype.init = function ()
Creates the textarea and installs the event listeners.
mxConnectionHandler.prototype.init = function()
Initializes the shapes required for this connection handler.
mxEdgeHandler.prototype.init = function()
Initializes the shapes required for this edge handler.
mxGraph.prototype.init = function(container)
Initializes the container and creates the respective datastructures.
mxGraphView.prototype.init = function()
Initializes the graph event dispatch loop for the specified container and invokes create to create the required DOM nodes for the display.
mxLabel.prototype.init = function(container)
Initializes the shape and the indicator.
init: function()
Initializes the DOM node for the console.
mxOutline.prototype.init = function(container)
Initializes the outline inside the given container.
mxPopupMenu.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxPopupMenuHandler.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxShape.prototype.init = function(container)
Initializes the shape by creaing the DOM node using create and adding it into the given container.
mxTooltipHandler.prototype.init = function()
Initializes the DOM nodes required for this tooltip handler.
mxHandle.prototype.init = function()
Creates and initializes the shapes required for this handle.
mxWindow.prototype.init = function(x,
y,
width,
height,
style)
Initializes the DOM tree that represents the window.
mxEdgeHandler.prototype.initBend = function(bend,
dblClick)
Helper method to initialize the given bend.
mxCellRenderer.prototype.initControl = function(state,
control,
handleEvents,
clickHandler)
Initializes the given control and returns the corresponding DOM node.
mxCoordinateAssignment.prototype.initialCoords = function(facade,
model)
Sets up the layout in an initial positioning.
mxCellRenderer.prototype.initializeLabel = function(state)
Initiailzes the label with a suitable container.
mxCellRenderer.prototype.initializeOverlay = function(state,
overlay)
Initializes the given overlay.
mxCellRenderer.prototype.initializeShape = function(state)
Initializes the shape in the given state by calling its init method with the correct container after configuring it using configureShape.
mxGraphHierarchyModel.prototype.initialRank = function()
Basic determination of minimum layer ranking by working from from sources or sinks and working through each node in the relevant edge direction.
mxSwimlaneModel.prototype.initialRank = function()
Basic determination of minimum layer ranking by working from from sources or sinks and working through each node in the relevant edge direction.
mxHandle.prototype.initShape = function(html)
Initializes shape and sets its cursor.
mxCell.prototype.insert = function(child,
index)
Inserts the specified child into the child array at the specified index and updates the parent reference of the child.
mxDefaultToolbar.prototype.insert = function(vertex,
evt,
target)
Handles a drop by inserting the given vertex into the given parent cell or the default parent if no parent is specified.
mxPrintPreview.prototype.insertBackgroundImage = function(div,
dx,
dy)
Inserts the background image into the given div.
mxCell.prototype.insertEdge = function(edge,
isOutgoing)
Inserts the specified edge into the edge array and returns the edge.
mxConnectionHandler.prototype.insertEdge = function(parent,
id,
value,
source,
target,
style)
Creates, inserts and returns the new edge for the given parameters.
mxGraph.prototype.insertEdge = function(parent,
id,
value,
source,
target,
style)
Adds a new edge into the given parent mxCell using value as the user object and the given source and target as the terminals of the new edge.
mxCodec.prototype.insertIntoGraph = function(cell)
Inserts the given cell into its parent and terminal cells.
mxCellRenderer.prototype.insertStateAfter = function(state,
node,
htmlNode)
Inserts the given array of mxShapes after the given nodes in the DOM.
mxGraph.prototype.insertVertex = function(parent,
id,
value,
x,
y,
width,
height,
style,
relative)
Adds a new vertex into the given parent mxCell using value as the user object and the given coordinates as the mxGeometry of the new vertex.
mxEditor.prototype.installChangeHandler = function (graph)
Installs the listeners required to automatically validate the graph.
mxWindow.prototype.installCloseHandler = function()
Adds the closeImage as a new image node in closeImg and installs the close event.
mxEditor.prototype.installDblClickHandler = function (graph)
Overrides mxGraph.dblClick to invoke dblClickAction on a cell and reset the selection tool in the toolbar.
mxEditor.prototype.installDrillHandler = function (graph)
Installs listeners for dispatching the root event.
mxDefaultToolbar.prototype.installDropHandler = function (img,
dropHandler)
Makes the given img draggable using the given function for handling a drop event.
mxEditor.prototype.installInsertHandler = function (graph)
Installs the handler for invoking insertFunction if one is defined.
mxCellEditor.prototype.installListeners = function(elt)
Installs listeners for focus, change and standard key event handling.
mxCellRenderer.prototype.installListeners = function(state)
Installs the event listeners for the given cell state.
mxGraphView.prototype.installListeners = function()
Installs the required listeners in the container.
mxWindow.prototype.installMaximizeHandler = function()
Installs the event listeners required for maximizing the window.
mxWindow.prototype.installMinimizeHandler = function()
Installs the event listeners required for minimizing the window.
mxWindow.prototype.installMoveHandler = function()
Installs the event listeners required for moving the window.
Installs the listeners for the given mxCellState, mxCellOverlay and mxShape that represents the overlay.
mxEditor.prototype.installUndoHandler = function (graph)
Adds the undoManager to the graph model and the view.
intersection: function (x0,
y0,
x1,
y1,
x2,
y2,
x3,
y3)
Returns the intersection of two lines as an mxPoint.
mxCellMarker.prototype.intersects = function(state,
me)
Returns true if the given coordinate pair intersects the given state.
mxGraph.prototype.intersects = function(state,
x,
y)
Returns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
intersects: function(a,
b)
Returns true if the two rectangles intersect.
mxGraphView.prototype.invalidate = function(cell,
recurse,
includeEdges)
Invalidates the state of the given cell, all its descendants and connected edges.
mxGraphHierarchyEdge.prototype.invert = function(layer)
Inverts the direction of this internal edge(s)
mxDragSource.prototype.isActive = function()
Returns true if this drag source is active.
mxPanningHandler.prototype.isActive = function()
Returns true if the handler is currently active.
mxSwimlaneManager.prototype.isAddEnabled = function()
Returns addEnabled.
mxEdgeHandler.prototype.isAddPointEvent = function(evt)
Returns true if the given event is a trigger to add a new point.
mxGraph.prototype.isAllowDanglingEdges = function()
Returns allowDanglingEdges as a boolean.
mxGraphView.prototype.isAllowEval = function()
Returns allowEval.
mxGraph.prototype.isAllowLoops = function()
Returns allowLoops as a boolean.
mxGraph.prototype.isAllowOverlapParent = function(cell)
Returns true if the given cell is allowed to be placed outside of the parents area.
isAltDown: function(evt)
Returns true if the alt key is pressed for the given event.
mxGraphHierarchyNode.prototype.isAncestor = function(otherNode)
mxGraphModel.prototype.isAncestor = function(parent,
child)
Returns true if the given parent is an ancestor of the given child.
isAncestorNode: function(ancestor,
child)
Returns true if the given ancestor is an ancestor of the given DOM node in the DOM.
mxGraph.prototype.isAutoSizeCell = function(cell)
Returns true if the size of the given cell should automatically be updated after a change of the label.
mxGraph.prototype.isAutoSizeCells = function()
Returns autoSizeCells.
mxXmlRequest.prototype.isBinary = function()
Returns binary.
mxObjectCodec.prototype.isBooleanAttribute = function(enc,
obj,
name,
value)
Returns true if the given object attribute is a boolean value.
isBrowserSupported: function()
Returns true if the current browser is supported, that is, if mxClient.IS_VML or mxClient.IS_SVG is true.
mxLayoutManager.prototype.isBubbling = function()
Returns true if a layout should bubble, that is, if the parent layout should be executed whenever a cell layout (layout of the children of a cell) has been executed.
mxGraph.prototype.isCellBendable = function(cell)
Returns true if the given cell is bendable.
mxGraph.prototype.isCellCloneable = function(cell)
Returns true if the given cell is cloneable.
codec.isCellCodec = function()
Returns true since this is a cell codec.
mxCodec.prototype.isCellCodec = function(codec)
Returns true if the given codec is a cell codec.
mxGraph.prototype.isCellCollapsed = function(cell)
Returns true if the given cell is collapsed in this graph.
mxGraphView.prototype.isCellCollapsed = function(cell)
Returns true if the children of the given cell should not be visible in the view.
mxGraph.prototype.isCellConnectable = function(cell)
Returns true if the given cell is connectable in this graph.
mxGraph.prototype.isCellDeletable = function(cell)
Returns true if the given cell is moveable.
mxGraph.prototype.isCellDisconnectable = function(cell,
terminal,
source)
Returns true if the given cell is disconnectable from the source or target terminal.
mxGraph.prototype.isCellEditable = function(cell)
Returns true if the given cell is editable.
mxGraph.prototype.isCellFoldable = function(cell,
collapse)
Returns true if the given cell is foldable.
mxSwimlaneManager.prototype.isCellHorizontal = function(cell)
Returns true if the given cell is horizontal.
mxSpaceManager.prototype.isCellIgnored = function(cell)
Sets the graph that the layouts operate on.
mxGraph.prototype.isCellLocked = function(cell)
Returns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
mxGraph.prototype.isCellMovable = function(cell)
Returns true if the given cell is moveable.
mxGraph.prototype.isCellResizable = function(cell)
Returns true if the given cell is resizable.
mxGraph.prototype.isCellRotatable = function(cell)
Returns true if the given cell is rotatable.
mxGraph.prototype.isCellsBendable = function()
Returns cellsBenadable.
mxGraph.prototype.isCellsCloneable = function()
Returns cellsCloneable, that is, if the graph allows cloning of cells by using control-drag.
mxGraph.prototype.isCellsDeletable = function()
Returns cellsDeletable.
mxGraph.prototype.isCellsDisconnectable = function()
Returns cellsDisconnectable.
mxGraph.prototype.isCellsEditable = function()
Returns cellsEditable.
mxGraph.prototype.isCellSelectable = function(cell)
Returns true if the given cell is selectable.
mxGraph.prototype.isCellSelected = function(cell)
Returns true if the given cell is selected.
mxSpaceManager.prototype.isCellShiftable = function(cell)
Sets the graph that the layouts operate on.
mxGraph.prototype.isCellsLocked = function()
Returns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
mxGraph.prototype.isCellsMovable = function()
Returns cellsMovable.
mxGraph.prototype.isCellsResizable = function()
Returns cellsResizable.
mxGraph.prototype.isCellsSelectable = function()
Returns cellsSelectable.
mxGraph.prototype.isCellVisible = function(cell)
Returns true if the given cell is visible in this graph.
mxGraphHandler.prototype.isCloneEnabled = function()
Returns cloneEnabled.
mxGraph.prototype.isCloneEvent = function(evt)
Returns true if the given event is a clone event.
mxGraph.prototype.isCloneInvalidEdges = function()
Returns cloneInvalidEdges as a boolean.
mxCell.prototype.isCollapsed = function()
Returns true if the cell is collapsed.
mxGraphModel.prototype.isCollapsed = function(cell)
Returns true if the given mxCell is collapsed.
mxCell.prototype.isConnectable = function()
Returns true if the cell is connectable.
mxGraph.prototype.isConnectable = function(connectable)
Returns true if the connectionHandler is enabled.
mxGraphModel.prototype.isConnectable = function(cell)
Returns true if the given mxCell is connectable.
mxConnectionHandler.prototype.isConnectableCell = function(cell)
Returns true if the given cell is connectable.
mxEdgeHandler.prototype.isConnectableCell = function(cell)
Returns true if the given cell is connectable.
mxGraph.prototype.isConnectableEdges = function()
Returns connectableEdges as a boolean.
mxConnectionHandler.prototype.isConnecting = function()
Returns true if the source terminal has been clicked and a new connection is currently being previewed.
mxGraph.prototype.isConstrainChild = function(cell)
Returns true if the given cell should be kept inside the bounds of its parent according to the rules defined by getOverlap and isAllowOverlapParent.
mxGraph.prototype.isConstrainChildren = function()
Returns constrainChildren.
mxGraph.prototype.isConstrainChildrenOnResize = function()
Returns constrainChildrenOnResize.
mxGraph.prototype.isConstrainedEvent = function(evt)
Returns true if the given mouse event should be aligned to the grid.
mxVertexHandler.prototype.isConstrainedEvent = function(me)
Returns true if the aspect ratio if the cell should be maintained.
isConsumed: function(evt)
Returns true if the event has been consumed using consume.
mxEventObject.prototype.isConsumed = function()
Returns true if the event has been consumed.
mxMouseEvent.prototype.isConsumed = function()
Returns consumed.
mxGraphView.prototype.isContainerEvent = function(evt)
Returns true if the event origin is one of the drawing panes or containers of the view.
isControlDown: function(evt)
Returns true if the control key is pressed for the given event.
mxKeyHandler.prototype.isControlDown = function(evt)
Returns true if the control key is pressed.
mxGraphModel.prototype.isCreateIds = function()
Returns createIds.
mxConnectionHandler.prototype.isCreateTarget = function()
Returns createTarget.
mxGraphHandler.prototype.isDelayedSelection = function(cell)
Hook to return true for delayed selections.
mxGraph.prototype.isDisconnectOnMove = function()
Returns disconnectOnMove as a boolean.
mxGraph.prototype.isDropEnabled = function()
Returns dropEnabled as a boolean.
mxCell.prototype.isEdge = function()
Returns true if the cell is an edge.
mxGraphAbstractHierarchyCell.prototype.isEdge = function()
Returns whether or not this cell is an edge
mxGraphHierarchyEdge.prototype.isEdge = function()
Returns true.
mxGraphModel.prototype.isEdge = function(cell)
Returns true if the given cell is an edge.
mxGraphLayout.prototype.isEdgeIgnored = function(edge)
Returns a boolean indicating if the given mxCell should be ignored by the algorithm.
mxGraph.prototype.isEdgeLabelsMovable = function()
Returns edgeLabelsMovable.
mxGraph.prototype.isEdgeValid = function(edge,
source,
target)
Checks if the return value of getEdgeValidationError for the given arguments is null.
mxGraph.prototype.isEditing = function(cell)
Returns true if the given cell is currently being edited.
mxCellStatePreview.prototype.isEmpty = function()
Returns true if this contains no entries.
isEmpty: function()
Returns true if the clipboard currently has not data stored.
mxGraphSelectionModel.prototype.isEmpty = function()
Returns true if no cells are currently selected.
mxUndoableEdit.prototype.isEmpty = function()
Returns true if the this edit contains no changes.
mxUndoManager.prototype.isEmpty = function()
Returns true if the history is empty.
mxAutoSaveManager.prototype.isEnabled = function()
Returns true if events are handled.
mxCellMarker.prototype.isEnabled = function()
Returns true if events are handled.
mxConnectionHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxConstraintHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxDragSource.prototype.isEnabled = function()
Returns enabled.
mxGraph.prototype.isEnabled = function()
Returns true if the graph is enabled.
mxGraphHandler.prototype.isEnabled = function()
Returns enabled.
mxKeyHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxLayoutManager.prototype.isEnabled = function()
Returns true if events are handled.
mxOutline.prototype.isEnabled = function()
Returns true if events are handled.
mxPopupMenu.prototype.isEnabled = function()
Returns true if events are handled.
mxRubberband.prototype.isEnabled = function()
Returns true if events are handled.
mxSelectionCellsHandler.prototype.isEnabled = function()
Returns enabled.
mxSpaceManager.prototype.isEnabled = function()
Returns true if events are handled.
mxSwimlaneManager.prototype.isEnabled = function()
Returns true if events are handled.
mxTooltipHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxUrlConverter.prototype.isEnabled = function()
Returns enabled.
mxGuide.prototype.isEnabledForEvent = function(evt)
Returns true if the guide should be enabled for the given native event.
mxGraph.prototype.isEnterStopsCellEditing = function()
Returns enterStopsCellEditing.
mxGraph.prototype.isEscapeEnabled = function()
Returns escapeEnabled.
mxConstraintHandler.prototype.isEventIgnored = function(me,
source)
Returns true if the given mxMouseEvent should be ignored in update.
mxGraph.prototype.isEventIgnored = function(evtName,
me,
sender)
Returns true if the event should be ignored in fireMouseEvent.
mxEventSource.prototype.isEventsEnabled = function()
Returns eventsEnabled.
mxCellEditor.prototype.isEventSource = function(evt)
Returns true if this editor is the source for the given native event.
mxGraph.prototype.isEventSourceIgnored = function(evtName,
me)
Returns true if the event should be ignored in fireMouseEvent.
codec.isExcluded = function(obj,
attr,
value,
isWrite)
Excludes user objects that are XML nodes.
mxObjectCodec.prototype.isExcluded = function(obj,
attr,
value,
write)
Returns true if the given attribute is to be ignored by the codec.
mxGraph.prototype.isExtendParent = function(cell)
Returns true if the parent of the given cell should be extended if the child has been resized so that it overlaps the parent.
mxGraph.prototype.isExtendParents = function()
Returns extendParents.
mxSpaceManager.prototype.isExtendParents = function()
Returns true if events are handled.
mxGraph.prototype.isExtendParentsOnAdd = function()
Returns extendParentsOnAdd.
mxPanningHandler.prototype.isForcePanningEvent = function(me)
Returns true if the given mxMouseEvent should start panning.
mxRubberband.prototype.isForceRubberbandEvent = function(me)
Returns true if the given mxMouseEvent should start rubberband selection.
mxKeyHandler.prototype.isGraphEvent = function(evt)
Returns true if the event should be processed by this handler, that is, if the event source is either the target, one of its direct children, a descendant of the mxGraph.container, or the mxGraph.cellEditor of the graph.
mxDragSource.prototype.isGridEnabled = function()
Returns gridEnabled.
mxGraph.prototype.isGridEnabled = function()
Returns gridEnabled as a boolean.
mxGraph.prototype.isGridEnabledEvent = function(evt)
Returns true if the given mouse event should be aligned to the grid.
mxDragSource.prototype.isGuidesEnabled = function()
Returns guidesEnabled.
mxEdgeHandler.prototype.isHandleEnabled = function(index)
Creates the shape used to display the given bend.
mxEdgeHandler.prototype.isHandleVisible = function(index)
Returns true if the handle at the given index is visible.
mxCellEditor.prototype.isHideLabel = function(state)
Returns true if the label should be hidden while the cell is being edited.
mxTooltipHandler.prototype.isHideOnHover = function()
Returns hideOnHover.
mxCompactTreeLayout.prototype.isHorizontal = function()
Returns horizontal.
mxPartitionLayout.prototype.isHorizontal = function()
Returns horizontal.
mxStackLayout.prototype.isHorizontal = function()
Returns horizontal.
mxSwimlaneManager.prototype.isHorizontal = function()
Returns horizontal.
mxCellMarker.prototype.isHotspotEnabled = function()
Returns true if hotspot is used in intersects.
mxImageShape.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxLabel.prototype.isHtmlAllowed = function()
Returns true for non-rounded, non-rotated shapes with no glass gradient and no indicator shape.
mxRectangleShape.prototype.isHtmlAllowed = function()
Returns true for non-rounded, non-rotated shapes with no glass gradient.
mxShape.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxText.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxGraph.prototype.isHtmlLabel = function(cell)
Returns true if the label must be rendered as HTML markup.
mxGraph.prototype.isHtmlLabels = function()
Returns htmlLabels.
mxHandle.prototype.isHtmlRequired = function()
Returns true if this handle should be rendered in HTML.
mxConnectionHandler.prototype.isImmediateConnectSource = function(state)
Returns true if a tap on the given source state should immediately start connecting.
mxGraph.prototype.isInvokesStopCellEditing = function()
Returns invokesStopCellEditing.
mxConstraintHandler.prototype.isKeepFocusEvent = function(me)
Returns true if the current focused state should not be changed for the given event.
mxGraph.prototype.isLabelClipped = function(cell)
Returns true if the overflow portion of labels should be hidden.
mxCellRenderer.prototype.isLabelEvent = function(state,
evt)
Returns true if the event is for the label of the given state.
mxGraph.prototype.isLabelMovable = function(cell)
Returns true if the given edges’s label is moveable.
isLanguageSupported: function(lan)
Hook for subclassers to disable support for a given language.
mxGraphModel.prototype.isLayer = function(cell)
Returns true if isRoot returns true for the parent of the given cell.
isLeftMouseButton: function(evt)
Returns true if the left mouse button is pressed for the given event.
mxVertexHandler.prototype.isLivePreviewBorder = function()
Called if livePreview is enabled to check if a border should be painted.
mxGraph.prototype.isLoop = function(state)
Returns true if the given cell state is a loop.
mxPopupMenu.prototype.isMenuShowing = function()
Returns true if the menu is showing.
isMetaDown: function(evt)
Returns true if the meta key is pressed for the given event.
isMiddleMouseButton: function(evt)
Returns true if the middle mouse button is pressed for the given event.
mxCellEditor.prototype.isModified = function()
Returns modified.
mxEditor.prototype.isModified = function ()
Returns modified.
isMouseEvent: function(evt)
Returns true if the event was generated using a mouse (not a pen or touch device).
mxGraphHandler.prototype.isMoveEnabled = function()
Returns moveEnabled.
mxConnectionHandler.prototype.isMoveIconToFrontForState = function(state)
Returns true if the state has a HTML label in the graph’s container, otherwise it returns moveIconFront.
mxGraph.prototype.isMultigraph = function()
Returns multigraph as a boolean.
isMultiTouchEvent: function(evt)
Returns true if the event was generated using a touch device (not a pen or mouse).
isNaN: function(value)
Returns true if the given value is of type number and isNaN returns true.
isNode: function(value,
nodeName,
attributeName,
attributeValue)
Returns true if the given value is an XML node with the node name and if the optional attribute has the specified value.
isNumeric: function(n)
Returns true if the specified value is numeric, that is, if it is not null, not an empty string, not a HEX number and isNaN returns false.
mxObjectCodec.prototype.isNumericAttribute = function(dec,
attr,
obj)
Returns true if the given XML attribute is a numeric value.
mxGraph.prototype.isOrthogonal = function(edge)
Returns true if perimeter points should be computed such that the resulting edge has only horizontal or vertical segments.
mxConnectionHandler.prototype.isOutlineConnectEvent = function(me)
Returns true if outlineConnect is true and the source of the event is the outline shape or shift is pressed.
mxEdgeHandler.prototype.isOutlineConnectEvent = function(me)
Returns true if outlineConnect is true and the source of the event is the outline shape or shift is pressed.
mxPolyline.prototype.isPaintBoundsInverted = function()
Returns false.
mxShape.prototype.isPaintBoundsInverted = function()
Returns true if the bounds should be inverted.
mxText.prototype.isPaintBoundsInverted = function()
Inverts the bounds if mxShape.isBoundsInverted returns true or if the horizontal style is false.
mxPanningHandler.prototype.isPanningEnabled = function()
Returns panningEnabled.
mxPanningHandler.prototype.isPanningTrigger = function(me)
Returns true if the given event is a panning trigger for the optional given cell.
mxShape.prototype.isParseVml = function()
Specifies if any VML should be added via insertAdjacentHtml to the DOM.
mxText.prototype.isParseVml = function()
Text shapes do not contain VML markup and do not need to be parsed.
mxPanningHandler.prototype.isPinchEnabled = function()
Returns pinchEnabled.
isPopupTrigger: function(evt)
Returns true if the event is a popup trigger.
mxMouseEvent.prototype.isPopupTrigger = function()
Returns true if the event is a popup trigger.
mxPopupMenu.prototype.isPopupTrigger = function(me)
Returns true if the given event is a popupmenu trigger for the optional given cell.
mxGraph.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, the cell returned by getTerminalForPort should be used as the terminal and the port should be referenced by the ID in either the mxConstants.STYLE_SOURCE_PORT or the or the mxConstants.STYLE_TARGET_PORT.
mxHierarchicalLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxSwimlaneLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxGraph.prototype.isPortsEnabled = function()
Returns portsEnabled as a boolean.
mxEditor.prototype.isPropertiesVisible = function ()
Returns true if the properties dialog is currently visible.
mxXmlRequest.prototype.isReady = function()
Returns true if the response is ready.
mxGraph.prototype.isRecursiveResize = function(state)
Returns recursiveResize.
codec.isReference = function(obj,
attr,
value,
isWrite)
Returns true for the child attribute if the child cell had a previous parent or if we’re reading the child as an attribute rather than a child node, in which case it’s always a reference.
mxObjectCodec.prototype.isReference = function(obj,
attr,
value,
write)
Returns true if the given fieldname is to be treated as a textual reference (ID).
mxUrlConverter.prototype.isRelativeUrl = function(url)
Returns true if the given URL is relative.
mxGraphHandler.prototype.isRemoveCellsFromParent = function()
Returns removeCellsFromParent.
mxEdgeHandler.prototype.isRemovePointEvent = function(evt)
Returns true if the given event is a trigger to remove a point.
mxGraphView.prototype.isRendering = function()
Returns rendering.
mxWindow.prototype.isResizable = function()
Returns true if the window is resizable.
mxGraph.prototype.isResizeContainer = function()
Returns resizeContainer.
mxSwimlaneManager.prototype.isResizeEnabled = function()
Returns resizeEnabled.
isRightMouseButton: function(evt)
Returns true if the right mouse button was pressed.
mxGraphModel.prototype.isRoot = function(cell)
Returns true if the given cell is the root of the model and a non-null value.
mxVertexHandler.prototype.isRotationHandleVisible = function()
Returns true if the rotation handle should be showing.
mxAnimation.prototype.isRunning = function()
Returns true if the animation is running.
mxGraphView.prototype.isScrollEvent = function(evt)
Returns true if the event origin is one of the scrollbars of the container in IE.
mxGraphSelectionModel.prototype.isSelected = function(cell)
Returns true if the given mxCell is selected.
mxGraphHandler.prototype.isSelectEnabled = function()
Returns selectEnabled.
mxEdgeHandler.prototype.isSelectionDashed = function()
Returns mxConstants.EDGE_SELECTION_DASHED.
mxVertexHandler.prototype.isSelectionDashed = function()
Returns mxConstants.VERTEX_SELECTION_DASHED.
mxGraph.prototype.isSelectionEmpty = function()
Returns true if the selection is empty.
mxPopupMenuHandler.prototype.isSelectOnPopup = function(me)
Hook for returning if a cell should be selected for a given mxMouseEvent.
mxCellEditor.prototype.isSelectText = function()
Returns selectText.
mxCellRenderer.prototype.isShapeEvent = function(state,
evt)
Returns true if the event is for the shape of the given state.
isShiftDown: function(evt)
Returns true if the shift key is pressed for the given event.
mxSpaceManager.prototype.isShiftDownwards = function()
Returns true if events are handled.
mxSpaceManager.prototype.isShiftRightwards = function()
Returns true if events are handled.
mxUndoableEdit.prototype.isSignificant = function()
Returns significant.
mxGraphSelectionModel.prototype.isSingleSelection = function()
Returns singleSelection as a boolean.
mxVertexHandler.prototype.isSizerVisible = function(index)
Returns true if the sizer for the given index is visible.
mxEdgeHandler.prototype.isSnapToTerminalsEvent = function(me)
Returns true if snapToTerminals is true and if alt is not pressed.
mxMouseEvent.prototype.isSource = function(shape)
Returns true if the given mxShape is the source of evt.
mxGraph.prototype.isSplitEnabled = function()
Returns splitEnabled as a boolean.
mxGraph.prototype.isSplitTarget = function(target,
cells,
evt)
Returns true if the given edge may be splitted into two edges with the given cell as a new terminal between the two.
mxConnectionHandler.prototype.isStartEvent = function(me)
Returns true if the given mouse down event should start this handler.
mxConstraintHandler.prototype.isStateIgnored = function(state,
source)
Returns true if the given state should be ignored.
mxCellEditor.prototype.isStopEditingEvent = function(evt)
Returns true if the given keydown event should stop cell editing.
mxConnectionHandler.prototype.isStopEvent = function(me)
Returns true if the given mouse up event should stop this handler.
mxGraph.prototype.isSwimlane = function (cell)
Returns true if the given cell is a swimlane in the graph.
mxSwimlaneManager.prototype.isSwimlaneIgnored = function(swimlane)
Returns true if the given swimlane should be ignored.
mxGraph.prototype.isSwimlaneNesting = function()
Returns swimlaneNesting as a boolean.
mxGraph.prototype.isSwimlaneSelectionEnabled = function()
Returns swimlaneSelectionEnabled as a boolean.
mxGraph.prototype.isSyntheticEventIgnored = function(evtName,
me,
sender)
Hook for ignoring synthetic mouse events after touchend in Firefox.
mxGraph.prototype.isTerminalPointMovable = function(cell,
source)
Returns true if the given terminal point is movable.
mxGraph.prototype.isToggleEvent = function(evt)
Returns true if the given event is a toggle event.
isTouchEvent: function(evt)
Returns true if the event was generated using a touch device (not a pen or mouse).
mxGraph.prototype.isValidAncestor = function(cell,
parent,
recurse)
Returns whether or not the specified parent is a valid ancestor of the specified cell, either direct or indirectly based on whether ancestor recursion is enabled.
mxGraph.prototype.isValidConnection = function(source,
target)
Returns true if the given target cell is a valid target for source.
mxGraph.prototype.isValidDropTarget = function(cell,
cells,
evt)
Returns true if the given cell is a valid drop target for the specified cells.
mxGraph.prototype.isValidRoot = function(cell)
Returns true if the given cell is a valid root for the cell display hierarchy.
mxConnectionHandler.prototype.isValidSource = function(cell,
me)
Returns mxGraph.isValidSource for the given source terminal.
mxGraph.prototype.isValidSource = function(cell)
Returns true if the given cell is a valid source for new connections.
mxCellMarker.prototype.isValidState = function(state)
Returns true if the given mxCellState is a valid state.
mxConnectionHandler.prototype.isValidTarget = function(cell)
Returns true.
mxGraph.prototype.isValidTarget = function(cell)
Returns isValidSource for the given cell.
mxCell.prototype.isVertex = function()
Returns true if the cell is a vertex.
mxGraphAbstractHierarchyCell.prototype.isVertex = function()
Returns whether or not this cell is a node
mxGraphHierarchyNode.prototype.isVertex = function()
Returns true.
mxGraphModel.prototype.isVertex = function(cell)
Returns true if the given cell is a vertex.
mxCompactTreeLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxFastOrganicLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxGraphLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored by the algorithm.
mxRadialTreeLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxGraph.prototype.isVertexLabelsMovable = function()
Returns vertexLabelsMovable.
mxGraphLayout.prototype.isVertexMovable = function(cell)
Returns a boolean indicating if the given mxCell is movable or bendable by the algorithm.
mxEdgeHandler.prototype.isVirtualBendsEnabled = function(evt)
Returns true if virtual bends should be added.
mxCell.prototype.isVisible = function()
Returns true if the cell is visibile.
mxGraphModel.prototype.isVisible = function(cell)
Returns true if the given mxCell is visible.
isVisible: function()
Returns true if the console is visible.
mxWindow.prototype.isVisible = function()
Returns true if the window is visible.
isVml: function(node)
Returns true if the given node is in the VML namespace.
mxGraph.prototype.isWrapping = function(cell)
This enables wrapping for HTML labels.
+
mxSvgCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Paints an image.
mxXmlCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Paints an image.
mxGraph.prototype.importCells = function(cells,
dx,
dy,
target,
evt)
Clones and inserts the given cells into the graph using the move method and returns the inserted cells.
importNode: function(doc,
node,
allChildren)
Cross browser implementation for document.importNode.
include: function(src)
Dynamically adds a script node to the document header.
indexOf: function(array,
obj)
Returns the index of obj in array or -1 if the array does not contain the given object.
indexOfStylename: function(style,
stylename)
Returns the index of the given stylename in the given style.
info: function()
Writes the current navigator information to the console.
mxCellEditor.prototype.init = function ()
Creates the textarea and installs the event listeners.
mxConnectionHandler.prototype.init = function()
Initializes the shapes required for this connection handler.
mxEdgeHandler.prototype.init = function()
Initializes the shapes required for this edge handler.
mxGraph.prototype.init = function(container)
Initializes the container and creates the respective datastructures.
mxGraphView.prototype.init = function()
Initializes the graph event dispatch loop for the specified container and invokes create to create the required DOM nodes for the display.
mxLabel.prototype.init = function(container)
Initializes the shape and the indicator.
init: function()
Initializes the DOM node for the console.
mxOutline.prototype.init = function(container)
Initializes the outline inside the given container.
mxPopupMenu.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxPopupMenuHandler.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxShape.prototype.init = function(container)
Initializes the shape by creaing the DOM node using create and adding it into the given container.
mxTooltipHandler.prototype.init = function()
Initializes the DOM nodes required for this tooltip handler.
mxHandle.prototype.init = function()
Creates and initializes the shapes required for this handle.
mxWindow.prototype.init = function(x,
y,
width,
height,
style)
Initializes the DOM tree that represents the window.
mxEdgeHandler.prototype.initBend = function(bend,
dblClick)
Helper method to initialize the given bend.
mxCellRenderer.prototype.initControl = function(state,
control,
handleEvents,
clickHandler)
Initializes the given control and returns the corresponding DOM node.
mxCoordinateAssignment.prototype.initialCoords = function(facade,
model)
Sets up the layout in an initial positioning.
mxCellRenderer.prototype.initializeLabel = function(state)
Initiailzes the label with a suitable container.
mxCellRenderer.prototype.initializeOverlay = function(state,
overlay)
Initializes the given overlay.
mxCellRenderer.prototype.initializeShape = function(state)
Initializes the shape in the given state by calling its init method with the correct container after configuring it using configureShape.
mxGraphHierarchyModel.prototype.initialRank = function()
Basic determination of minimum layer ranking by working from from sources or sinks and working through each node in the relevant edge direction.
mxSwimlaneModel.prototype.initialRank = function()
Basic determination of minimum layer ranking by working from from sources or sinks and working through each node in the relevant edge direction.
mxHandle.prototype.initShape = function(html)
Initializes shape and sets its cursor.
mxCell.prototype.insert = function(child,
index)
Inserts the specified child into the child array at the specified index and updates the parent reference of the child.
mxDefaultToolbar.prototype.insert = function(vertex,
evt,
target)
Handles a drop by inserting the given vertex into the given parent cell or the default parent if no parent is specified.
mxPrintPreview.prototype.insertBackgroundImage = function(div,
dx,
dy)
Inserts the background image into the given div.
mxCell.prototype.insertEdge = function(edge,
isOutgoing)
Inserts the specified edge into the edge array and returns the edge.
mxConnectionHandler.prototype.insertEdge = function(parent,
id,
value,
source,
target,
style)
Creates, inserts and returns the new edge for the given parameters.
mxGraph.prototype.insertEdge = function(parent,
id,
value,
source,
target,
style)
Adds a new edge into the given parent mxCell using value as the user object and the given source and target as the terminals of the new edge.
mxCodec.prototype.insertIntoGraph = function(cell)
Inserts the given cell into its parent and terminal cells.
mxCellRenderer.prototype.insertStateAfter = function(state,
node,
htmlNode)
Inserts the given array of mxShapes after the given nodes in the DOM.
mxGraph.prototype.insertVertex = function(parent,
id,
value,
x,
y,
width,
height,
style,
relative)
Adds a new vertex into the given parent mxCell using value as the user object and the given coordinates as the mxGeometry of the new vertex.
mxEditor.prototype.installChangeHandler = function (graph)
Installs the listeners required to automatically validate the graph.
mxWindow.prototype.installCloseHandler = function()
Adds the closeImage as a new image node in closeImg and installs the close event.
mxEditor.prototype.installDblClickHandler = function (graph)
Overrides mxGraph.dblClick to invoke dblClickAction on a cell and reset the selection tool in the toolbar.
mxEditor.prototype.installDrillHandler = function (graph)
Installs listeners for dispatching the root event.
mxDefaultToolbar.prototype.installDropHandler = function (img,
dropHandler)
Makes the given img draggable using the given function for handling a drop event.
mxEditor.prototype.installInsertHandler = function (graph)
Installs the handler for invoking insertFunction if one is defined.
mxCellEditor.prototype.installListeners = function(elt)
Installs listeners for focus, change and standard key event handling.
mxCellRenderer.prototype.installListeners = function(state)
Installs the event listeners for the given cell state.
mxGraphView.prototype.installListeners = function()
Installs the required listeners in the container.
mxWindow.prototype.installMaximizeHandler = function()
Installs the event listeners required for maximizing the window.
mxWindow.prototype.installMinimizeHandler = function()
Installs the event listeners required for minimizing the window.
mxWindow.prototype.installMoveHandler = function()
Installs the event listeners required for moving the window.
Installs the listeners for the given mxCellState, mxCellOverlay and mxShape that represents the overlay.
mxEditor.prototype.installUndoHandler = function (graph)
Adds the undoManager to the graph model and the view.
intersection: function (x0,
y0,
x1,
y1,
x2,
y2,
x3,
y3)
Returns the intersection of two lines as an mxPoint.
mxCellMarker.prototype.intersects = function(state,
me)
Returns true if the given coordinate pair intersects the given state.
mxGraph.prototype.intersects = function(state,
x,
y)
Returns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
intersects: function(a,
b)
Returns true if the two rectangles intersect.
mxGraphView.prototype.invalidate = function(cell,
recurse,
includeEdges)
Invalidates the state of the given cell, all its descendants and connected edges.
mxGraphHierarchyEdge.prototype.invert = function(layer)
Inverts the direction of this internal edge(s)
mxDragSource.prototype.isActive = function()
Returns true if this drag source is active.
mxPanningHandler.prototype.isActive = function()
Returns true if the handler is currently active.
mxSwimlaneManager.prototype.isAddEnabled = function()
Returns addEnabled.
mxEdgeHandler.prototype.isAddPointEvent = function(evt)
Returns true if the given event is a trigger to add a new point.
mxGraph.prototype.isAllowDanglingEdges = function()
Returns allowDanglingEdges as a boolean.
mxGraphView.prototype.isAllowEval = function()
Returns allowEval.
mxGraph.prototype.isAllowLoops = function()
Returns allowLoops as a boolean.
mxGraph.prototype.isAllowOverlapParent = function(cell)
Returns true if the given cell is allowed to be placed outside of the parents area.
isAltDown: function(evt)
Returns true if the alt key is pressed for the given event.
mxGraphHierarchyNode.prototype.isAncestor = function(otherNode)
mxGraphModel.prototype.isAncestor = function(parent,
child)
Returns true if the given parent is an ancestor of the given child.
isAncestorNode: function(ancestor,
child)
Returns true if the given ancestor is an ancestor of the given DOM node in the DOM.
mxGraph.prototype.isAutoSizeCell = function(cell)
Returns true if the size of the given cell should automatically be updated after a change of the label.
mxGraph.prototype.isAutoSizeCells = function()
Returns autoSizeCells.
mxXmlRequest.prototype.isBinary = function()
Returns binary.
mxObjectCodec.prototype.isBooleanAttribute = function(enc,
obj,
name,
value)
Returns true if the given object attribute is a boolean value.
isBrowserSupported: function()
Returns true if the current browser is supported, that is, if mxClient.IS_VML or mxClient.IS_SVG is true.
mxLayoutManager.prototype.isBubbling = function()
Returns true if a layout should bubble, that is, if the parent layout should be executed whenever a cell layout (layout of the children of a cell) has been executed.
mxGraph.prototype.isCellBendable = function(cell)
Returns true if the given cell is bendable.
mxGraph.prototype.isCellCloneable = function(cell)
Returns true if the given cell is cloneable.
codec.isCellCodec = function()
Returns true since this is a cell codec.
mxCodec.prototype.isCellCodec = function(codec)
Returns true if the given codec is a cell codec.
mxGraph.prototype.isCellCollapsed = function(cell)
Returns true if the given cell is collapsed in this graph.
mxGraphView.prototype.isCellCollapsed = function(cell)
Returns true if the children of the given cell should not be visible in the view.
mxGraph.prototype.isCellConnectable = function(cell)
Returns true if the given cell is connectable in this graph.
mxGraph.prototype.isCellDeletable = function(cell)
Returns true if the given cell is moveable.
mxGraph.prototype.isCellDisconnectable = function(cell,
terminal,
source)
Returns true if the given cell is disconnectable from the source or target terminal.
mxGraph.prototype.isCellEditable = function(cell)
Returns true if the given cell is editable.
mxGraph.prototype.isCellFoldable = function(cell,
collapse)
Returns true if the given cell is foldable.
mxSwimlaneManager.prototype.isCellHorizontal = function(cell)
Returns true if the given cell is horizontal.
mxSpaceManager.prototype.isCellIgnored = function(cell)
Sets the graph that the layouts operate on.
mxGraph.prototype.isCellLocked = function(cell)
Returns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
mxGraph.prototype.isCellMovable = function(cell)
Returns true if the given cell is moveable.
mxGraph.prototype.isCellResizable = function(cell)
Returns true if the given cell is resizable.
mxGraph.prototype.isCellRotatable = function(cell)
Returns true if the given cell is rotatable.
mxGraph.prototype.isCellsBendable = function()
Returns cellsBenadable.
mxGraph.prototype.isCellsCloneable = function()
Returns cellsCloneable, that is, if the graph allows cloning of cells by using control-drag.
mxGraph.prototype.isCellsDeletable = function()
Returns cellsDeletable.
mxGraph.prototype.isCellsDisconnectable = function()
Returns cellsDisconnectable.
mxGraph.prototype.isCellsEditable = function()
Returns cellsEditable.
mxGraph.prototype.isCellSelectable = function(cell)
Returns true if the given cell is selectable.
mxGraph.prototype.isCellSelected = function(cell)
Returns true if the given cell is selected.
mxSpaceManager.prototype.isCellShiftable = function(cell)
Sets the graph that the layouts operate on.
mxGraph.prototype.isCellsLocked = function()
Returns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
mxGraph.prototype.isCellsMovable = function()
Returns cellsMovable.
mxGraph.prototype.isCellsResizable = function()
Returns cellsResizable.
mxGraph.prototype.isCellsSelectable = function()
Returns cellsSelectable.
mxGraph.prototype.isCellVisible = function(cell)
Returns true if the given cell is visible in this graph.
mxGraphHandler.prototype.isCloneEnabled = function()
Returns cloneEnabled.
mxGraph.prototype.isCloneEvent = function(evt)
Returns true if the given event is a clone event.
mxGraph.prototype.isCloneInvalidEdges = function()
Returns cloneInvalidEdges as a boolean.
mxCell.prototype.isCollapsed = function()
Returns true if the cell is collapsed.
mxGraphModel.prototype.isCollapsed = function(cell)
Returns true if the given mxCell is collapsed.
mxCell.prototype.isConnectable = function()
Returns true if the cell is connectable.
mxGraph.prototype.isConnectable = function(connectable)
Returns true if the connectionHandler is enabled.
mxGraphModel.prototype.isConnectable = function(cell)
Returns true if the given mxCell is connectable.
mxConnectionHandler.prototype.isConnectableCell = function(cell)
Returns true if the given cell is connectable.
mxEdgeHandler.prototype.isConnectableCell = function(cell)
Returns true if the given cell is connectable.
mxGraph.prototype.isConnectableEdges = function()
Returns connectableEdges as a boolean.
mxConnectionHandler.prototype.isConnecting = function()
Returns true if the source terminal has been clicked and a new connection is currently being previewed.
mxGraph.prototype.isConstrainChild = function(cell)
Returns true if the given cell should be kept inside the bounds of its parent according to the rules defined by getOverlap and isAllowOverlapParent.
mxGraph.prototype.isConstrainChildren = function()
Returns constrainChildren.
mxGraph.prototype.isConstrainChildrenOnResize = function()
Returns constrainChildrenOnResize.
mxGraph.prototype.isConstrainedEvent = function(evt)
Returns true if the given mouse event should be aligned to the grid.
mxVertexHandler.prototype.isConstrainedEvent = function(me)
Returns true if the aspect ratio if the cell should be maintained.
isConsumed: function(evt)
Returns true if the event has been consumed using consume.
mxEventObject.prototype.isConsumed = function()
Returns true if the event has been consumed.
mxMouseEvent.prototype.isConsumed = function()
Returns consumed.
mxGraphView.prototype.isContainerEvent = function(evt)
Returns true if the event origin is one of the drawing panes or containers of the view.
isControlDown: function(evt)
Returns true if the control key is pressed for the given event.
mxKeyHandler.prototype.isControlDown = function(evt)
Returns true if the control key is pressed.
mxGraphModel.prototype.isCreateIds = function()
Returns createIds.
mxConnectionHandler.prototype.isCreateTarget = function()
Returns createTarget.
mxGraphHandler.prototype.isDelayedSelection = function(cell)
Hook to return true for delayed selections.
mxGraph.prototype.isDisconnectOnMove = function()
Returns disconnectOnMove as a boolean.
mxGraph.prototype.isDropEnabled = function()
Returns dropEnabled as a boolean.
mxCell.prototype.isEdge = function()
Returns true if the cell is an edge.
mxGraphAbstractHierarchyCell.prototype.isEdge = function()
Returns whether or not this cell is an edge
mxGraphHierarchyEdge.prototype.isEdge = function()
Returns true.
mxGraphModel.prototype.isEdge = function(cell)
Returns true if the given cell is an edge.
mxGraphLayout.prototype.isEdgeIgnored = function(edge)
Returns a boolean indicating if the given mxCell should be ignored by the algorithm.
mxGraph.prototype.isEdgeLabelsMovable = function()
Returns edgeLabelsMovable.
mxGraph.prototype.isEdgeValid = function(edge,
source,
target)
Checks if the return value of getEdgeValidationError for the given arguments is null.
mxGraph.prototype.isEditing = function(cell)
Returns true if the given cell is currently being edited.
mxCellStatePreview.prototype.isEmpty = function()
Returns true if this contains no entries.
isEmpty: function()
Returns true if the clipboard currently has not data stored.
mxGraphSelectionModel.prototype.isEmpty = function()
Returns true if no cells are currently selected.
mxUndoableEdit.prototype.isEmpty = function()
Returns true if the this edit contains no changes.
mxUndoManager.prototype.isEmpty = function()
Returns true if the history is empty.
mxAutoSaveManager.prototype.isEnabled = function()
Returns true if events are handled.
mxCellMarker.prototype.isEnabled = function()
Returns true if events are handled.
mxConnectionHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxConstraintHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxDragSource.prototype.isEnabled = function()
Returns enabled.
mxGraph.prototype.isEnabled = function()
Returns true if the graph is enabled.
mxGraphHandler.prototype.isEnabled = function()
Returns enabled.
mxKeyHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxLayoutManager.prototype.isEnabled = function()
Returns true if events are handled.
mxOutline.prototype.isEnabled = function()
Returns true if events are handled.
mxPopupMenu.prototype.isEnabled = function()
Returns true if events are handled.
mxRubberband.prototype.isEnabled = function()
Returns true if events are handled.
mxSelectionCellsHandler.prototype.isEnabled = function()
Returns enabled.
mxSpaceManager.prototype.isEnabled = function()
Returns true if events are handled.
mxSwimlaneManager.prototype.isEnabled = function()
Returns true if events are handled.
mxTooltipHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxUrlConverter.prototype.isEnabled = function()
Returns enabled.
mxGuide.prototype.isEnabledForEvent = function(evt)
Returns true if the guide should be enabled for the given native event.
mxGraph.prototype.isEnterStopsCellEditing = function()
Returns enterStopsCellEditing.
mxGraph.prototype.isEscapeEnabled = function()
Returns escapeEnabled.
mxConstraintHandler.prototype.isEventIgnored = function(me,
source)
Returns true if the given mxMouseEvent should be ignored in update.
mxGraph.prototype.isEventIgnored = function(evtName,
me,
sender)
Returns true if the event should be ignored in fireMouseEvent.
mxEventSource.prototype.isEventsEnabled = function()
Returns eventsEnabled.
mxCellEditor.prototype.isEventSource = function(evt)
Returns true if this editor is the source for the given native event.
mxGraph.prototype.isEventSourceIgnored = function(evtName,
me)
Returns true if the event should be ignored in fireMouseEvent.
codec.isExcluded = function(obj,
attr,
value,
isWrite)
Excludes user objects that are XML nodes.
mxObjectCodec.prototype.isExcluded = function(obj,
attr,
value,
write)
Returns true if the given attribute is to be ignored by the codec.
mxGraph.prototype.isExtendParent = function(cell)
Returns true if the parent of the given cell should be extended if the child has been resized so that it overlaps the parent.
mxGraph.prototype.isExtendParents = function()
Returns extendParents.
mxSpaceManager.prototype.isExtendParents = function()
Returns true if events are handled.
mxGraph.prototype.isExtendParentsOnAdd = function()
Returns extendParentsOnAdd.
mxPanningHandler.prototype.isForcePanningEvent = function(me)
Returns true if the given mxMouseEvent should start panning.
mxRubberband.prototype.isForceRubberbandEvent = function(me)
Returns true if the given mxMouseEvent should start rubberband selection.
mxKeyHandler.prototype.isGraphEvent = function(evt)
Returns true if the event should be processed by this handler, that is, if the event source is either the target, one of its direct children, a descendant of the mxGraph.container, or the mxGraph.cellEditor of the graph.
mxDragSource.prototype.isGridEnabled = function()
Returns gridEnabled.
mxGraph.prototype.isGridEnabled = function()
Returns gridEnabled as a boolean.
mxGraph.prototype.isGridEnabledEvent = function(evt)
Returns true if the given mouse event should be aligned to the grid.
mxDragSource.prototype.isGuidesEnabled = function()
Returns guidesEnabled.
mxEdgeHandler.prototype.isHandleEnabled = function(index)
Creates the shape used to display the given bend.
mxEdgeHandler.prototype.isHandleVisible = function(index)
Returns true if the handle at the given index is visible.
mxCellEditor.prototype.isHideLabel = function(state)
Returns true if the label should be hidden while the cell is being edited.
mxTooltipHandler.prototype.isHideOnHover = function()
Returns hideOnHover.
mxCompactTreeLayout.prototype.isHorizontal = function()
Returns horizontal.
mxPartitionLayout.prototype.isHorizontal = function()
Returns horizontal.
mxStackLayout.prototype.isHorizontal = function()
Returns horizontal.
mxSwimlaneManager.prototype.isHorizontal = function()
Returns horizontal.
mxCellMarker.prototype.isHotspotEnabled = function()
Returns true if hotspot is used in intersects.
mxImageShape.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxLabel.prototype.isHtmlAllowed = function()
Returns true for non-rounded, non-rotated shapes with no glass gradient and no indicator shape.
mxRectangleShape.prototype.isHtmlAllowed = function()
Returns true for non-rounded, non-rotated shapes with no glass gradient.
mxShape.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxText.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxGraph.prototype.isHtmlLabel = function(cell)
Returns true if the label must be rendered as HTML markup.
mxGraph.prototype.isHtmlLabels = function()
Returns htmlLabels.
mxHandle.prototype.isHtmlRequired = function()
Returns true if this handle should be rendered in HTML.
mxConnectionHandler.prototype.isImmediateConnectSource = function(state)
Returns true if a tap on the given source state should immediately start connecting.
mxGraph.prototype.isInvokesStopCellEditing = function()
Returns invokesStopCellEditing.
mxConstraintHandler.prototype.isKeepFocusEvent = function(me)
Returns true if the current focused state should not be changed for the given event.
mxGraph.prototype.isLabelClipped = function(cell)
Returns true if the overflow portion of labels should be hidden.
mxCellRenderer.prototype.isLabelEvent = function(state,
evt)
Returns true if the event is for the label of the given state.
mxGraph.prototype.isLabelMovable = function(cell)
Returns true if the given edges’s label is moveable.
isLanguageSupported: function(lan)
Hook for subclassers to disable support for a given language.
mxGraphModel.prototype.isLayer = function(cell)
Returns true if isRoot returns true for the parent of the given cell.
isLeftMouseButton: function(evt)
Returns true if the left mouse button is pressed for the given event.
mxVertexHandler.prototype.isLivePreviewBorder = function()
Called if livePreview is enabled to check if a border should be painted.
mxGraph.prototype.isLoop = function(state)
Returns true if the given cell state is a loop.
mxPopupMenu.prototype.isMenuShowing = function()
Returns true if the menu is showing.
isMetaDown: function(evt)
Returns true if the meta key is pressed for the given event.
isMiddleMouseButton: function(evt)
Returns true if the middle mouse button is pressed for the given event.
mxCellEditor.prototype.isModified = function()
Returns modified.
mxEditor.prototype.isModified = function ()
Returns modified.
isMouseEvent: function(evt)
Returns true if the event was generated using a mouse (not a pen or touch device).
mxGraphHandler.prototype.isMoveEnabled = function()
Returns moveEnabled.
mxConnectionHandler.prototype.isMoveIconToFrontForState = function(state)
Returns true if the state has a HTML label in the graph’s container, otherwise it returns moveIconFront.
mxGraph.prototype.isMultigraph = function()
Returns multigraph as a boolean.
isMultiTouchEvent: function(evt)
Returns true if the event was generated using a touch device (not a pen or mouse).
isNaN: function(value)
Returns true if the given value is of type number and isNaN returns true.
isNode: function(value,
nodeName,
attributeName,
attributeValue)
Returns true if the given value is an XML node with the node name and if the optional attribute has the specified value.
isNumeric: function(n)
Returns true if the specified value is numeric, that is, if it is not null, not an empty string, not a HEX number and isNaN returns false.
mxObjectCodec.prototype.isNumericAttribute = function(dec,
attr,
obj)
Returns true if the given XML attribute is a numeric value.
mxGraph.prototype.isOrthogonal = function(edge)
Returns true if perimeter points should be computed such that the resulting edge has only horizontal or vertical segments.
mxConnectionHandler.prototype.isOutlineConnectEvent = function(me)
Returns true if outlineConnect is true and the source of the event is the outline shape or shift is pressed.
mxEdgeHandler.prototype.isOutlineConnectEvent = function(me)
Returns true if outlineConnect is true and the source of the event is the outline shape or shift is pressed.
mxPolyline.prototype.isPaintBoundsInverted = function()
Returns false.
mxShape.prototype.isPaintBoundsInverted = function()
Returns true if the bounds should be inverted.
mxText.prototype.isPaintBoundsInverted = function()
Inverts the bounds if mxShape.isBoundsInverted returns true or if the horizontal style is false.
mxPanningHandler.prototype.isPanningEnabled = function()
Returns panningEnabled.
mxPanningHandler.prototype.isPanningTrigger = function(me)
Returns true if the given event is a panning trigger for the optional given cell.
mxShape.prototype.isParseVml = function()
Specifies if any VML should be added via insertAdjacentHtml to the DOM.
mxText.prototype.isParseVml = function()
Text shapes do not contain VML markup and do not need to be parsed.
mxPanningHandler.prototype.isPinchEnabled = function()
Returns pinchEnabled.
isPopupTrigger: function(evt)
Returns true if the event is a popup trigger.
mxMouseEvent.prototype.isPopupTrigger = function()
Returns true if the event is a popup trigger.
mxPopupMenu.prototype.isPopupTrigger = function(me)
Returns true if the given event is a popupmenu trigger for the optional given cell.
mxGraph.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, the cell returned by getTerminalForPort should be used as the terminal and the port should be referenced by the ID in either the mxConstants.STYLE_SOURCE_PORT or the or the mxConstants.STYLE_TARGET_PORT.
mxHierarchicalLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxSwimlaneLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxGraph.prototype.isPortsEnabled = function()
Returns portsEnabled as a boolean.
mxEditor.prototype.isPropertiesVisible = function ()
Returns true if the properties dialog is currently visible.
mxXmlRequest.prototype.isReady = function()
Returns true if the response is ready.
mxGraph.prototype.isRecursiveResize = function(state)
Returns recursiveResize.
codec.isReference = function(obj,
attr,
value,
isWrite)
Returns true for the child attribute if the child cell had a previous parent or if we’re reading the child as an attribute rather than a child node, in which case it’s always a reference.
mxObjectCodec.prototype.isReference = function(obj,
attr,
value,
write)
Returns true if the given fieldname is to be treated as a textual reference (ID).
mxUrlConverter.prototype.isRelativeUrl = function(url)
Returns true if the given URL is relative.
mxGraphHandler.prototype.isRemoveCellsFromParent = function()
Returns removeCellsFromParent.
mxEdgeHandler.prototype.isRemovePointEvent = function(evt)
Returns true if the given event is a trigger to remove a point.
mxGraphView.prototype.isRendering = function()
Returns rendering.
mxWindow.prototype.isResizable = function()
Returns true if the window is resizable.
mxGraph.prototype.isResizeContainer = function()
Returns resizeContainer.
mxSwimlaneManager.prototype.isResizeEnabled = function()
Returns resizeEnabled.
isRightMouseButton: function(evt)
Returns true if the right mouse button was pressed.
mxGraphModel.prototype.isRoot = function(cell)
Returns true if the given cell is the root of the model and a non-null value.
mxVertexHandler.prototype.isRotationHandleVisible = function()
Returns true if the rotation handle should be showing.
mxAnimation.prototype.isRunning = function()
Returns true if the animation is running.
mxGraphView.prototype.isScrollEvent = function(evt)
Returns true if the event origin is one of the scrollbars of the container in IE.
mxGraphSelectionModel.prototype.isSelected = function(cell)
Returns true if the given mxCell is selected.
mxGraphHandler.prototype.isSelectEnabled = function()
Returns selectEnabled.
mxEdgeHandler.prototype.isSelectionDashed = function()
Returns mxConstants.EDGE_SELECTION_DASHED.
mxVertexHandler.prototype.isSelectionDashed = function()
Returns mxConstants.VERTEX_SELECTION_DASHED.
mxGraph.prototype.isSelectionEmpty = function()
Returns true if the selection is empty.
mxPopupMenuHandler.prototype.isSelectOnPopup = function(me)
Hook for returning if a cell should be selected for a given mxMouseEvent.
mxCellEditor.prototype.isSelectText = function()
Returns selectText.
mxCellRenderer.prototype.isShapeEvent = function(state,
evt)
Returns true if the event is for the shape of the given state.
isShiftDown: function(evt)
Returns true if the shift key is pressed for the given event.
mxSpaceManager.prototype.isShiftDownwards = function()
Returns true if events are handled.
mxSpaceManager.prototype.isShiftRightwards = function()
Returns true if events are handled.
mxUndoableEdit.prototype.isSignificant = function()
Returns significant.
mxGraphSelectionModel.prototype.isSingleSelection = function()
Returns singleSelection as a boolean.
mxVertexHandler.prototype.isSizerVisible = function(index)
Returns true if the sizer for the given index is visible.
mxEdgeHandler.prototype.isSnapToTerminalsEvent = function(me)
Returns true if snapToTerminals is true and if alt is not pressed.
mxMouseEvent.prototype.isSource = function(shape)
Returns true if the given mxShape is the source of evt.
mxGraph.prototype.isSplitEnabled = function()
Returns splitEnabled as a boolean.
mxGraph.prototype.isSplitTarget = function(target,
cells,
evt)
Returns true if the given edge may be splitted into two edges with the given cell as a new terminal between the two.
mxConnectionHandler.prototype.isStartEvent = function(me)
Returns true if the given mouse down event should start this handler.
mxConstraintHandler.prototype.isStateIgnored = function(state,
source)
Returns true if the given state should be ignored.
mxCellEditor.prototype.isStopEditingEvent = function(evt)
Returns true if the given keydown event should stop cell editing.
mxConnectionHandler.prototype.isStopEvent = function(me)
Returns true if the given mouse up event should stop this handler.
mxGraph.prototype.isSwimlane = function (cell)
Returns true if the given cell is a swimlane in the graph.
mxSwimlaneManager.prototype.isSwimlaneIgnored = function(swimlane)
Returns true if the given swimlane should be ignored.
mxGraph.prototype.isSwimlaneNesting = function()
Returns swimlaneNesting as a boolean.
mxGraph.prototype.isSwimlaneSelectionEnabled = function()
Returns swimlaneSelectionEnabled as a boolean.
mxGraph.prototype.isSyntheticEventIgnored = function(evtName,
me,
sender)
Hook for ignoring synthetic mouse events after touchend in Firefox.
mxGraph.prototype.isTerminalPointMovable = function(cell,
source)
Returns true if the given terminal point is movable.
mxGraph.prototype.isToggleEvent = function(evt)
Returns true if the given event is a toggle event.
isTouchEvent: function(evt)
Returns true if the event was generated using a touch device (not a pen or mouse).
mxGraph.prototype.isValidAncestor = function(cell,
parent,
recurse)
Returns whether or not the specified parent is a valid ancestor of the specified cell, either direct or indirectly based on whether ancestor recursion is enabled.
mxGraph.prototype.isValidConnection = function(source,
target)
Returns true if the given target cell is a valid target for source.
mxGraph.prototype.isValidDropTarget = function(cell,
cells,
evt)
Returns true if the given cell is a valid drop target for the specified cells.
mxGraph.prototype.isValidRoot = function(cell)
Returns true if the given cell is a valid root for the cell display hierarchy.
mxConnectionHandler.prototype.isValidSource = function(cell,
me)
Returns mxGraph.isValidSource for the given source terminal.
mxGraph.prototype.isValidSource = function(cell)
Returns true if the given cell is a valid source for new connections.
mxCellMarker.prototype.isValidState = function(state)
Returns true if the given mxCellState is a valid state.
mxConnectionHandler.prototype.isValidTarget = function(cell)
Returns true.
mxGraph.prototype.isValidTarget = function(cell)
Returns isValidSource for the given cell.
mxCell.prototype.isVertex = function()
Returns true if the cell is a vertex.
mxGraphAbstractHierarchyCell.prototype.isVertex = function()
Returns whether or not this cell is a node
mxGraphHierarchyNode.prototype.isVertex = function()
Returns true.
mxGraphModel.prototype.isVertex = function(cell)
Returns true if the given cell is a vertex.
mxCompactTreeLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxFastOrganicLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxGraphLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored by the algorithm.
mxRadialTreeLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxGraph.prototype.isVertexLabelsMovable = function()
Returns vertexLabelsMovable.
mxGraphLayout.prototype.isVertexMovable = function(cell)
Returns a boolean indicating if the given mxCell is movable or bendable by the algorithm.
mxEdgeHandler.prototype.isVirtualBendsEnabled = function(evt)
Returns true if virtual bends should be added.
mxCell.prototype.isVisible = function()
Returns true if the cell is visibile.
mxGraphModel.prototype.isVisible = function(cell)
Returns true if the given mxCell is visible.
isVisible: function()
Returns true if the console is visible.
mxWindow.prototype.isVisible = function()
Returns true if the window is visible.
isVml: function(node)
Returns true if the given node is in the VML namespace.
mxGraph.prototype.isWrapping = function(cell)
This enables wrapping for HTML labels.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General.html b/docs/js-api/index/General.html index 15d39dd4b..8ca0c6c18 100644 --- a/docs/js-api/index/General.html +++ b/docs/js-api/index/General.html @@ -13,7 +13,7 @@ if (browserType) {document.write("
");if (browserV
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 ABSOLUTE_LINE_HEIGHT, mxConstants
 absoluteOffset, mxCellState
 absolutePoints, mxCellState
 actions, mxEditor
 Actions and Options, mxEditor
 activate, mxWindow
 ACTIVATE
 add
 ADD
 ADD_CELLS
 ADD_OVERLAY
 ADD_VERTEX
 addAction
 addActionCombo, mxDefaultToolbar
 addActionOption, mxDefaultToolbar
 addActions, mxEditor
 addAlias, mxCodecRegistry
 addAllEdges, mxGraph
 addBreak, mxToolbar
 addButton, mxLog
 addButtons, mxForm
 addCell
 addCellOverlay, mxGraph
 addCells
 addCheckbox, mxForm
 addCombo
 addEdge, mxGraph
 addEdges, mxCellStatePreview
 addEnabled
 addField, mxForm
 addGestureListeners, mxEvent
 addGraphFragment, mxPrintPreview
 addImageBundle, mxGraph
 addItem
 addItems, mxDefaultPopupMenu
 addLine, mxToolbar
 addListener
 addMarker, mxMarker
 addMode
 addMouseListener, mxGraph
 addNode
 addObjectValue, mxObjectCodec
 addOp, mxAbstractCanvas2D
 addOption
 addPoint, mxEdgeHandler
 addPointAt, mxEdgeHandler
 addPoints, mxShape
 addPrototype, mxDefaultToolbar
 addSelectionCell, mxGraph
 addSelectionCells, mxGraph
 addSeparator
 addStencil, mxStencilRegistry
 addStylename, mxUtils
 addSwitchMode, mxToolbar
 addTemplate, mxEditor
 addText, mxForm
 addTextarea, mxForm
 addTextBackground, mxSvgCanvas2D
 addTransparentBackgroundFilter, mxUtils
 addVertex, mxEditor
 addWaypoint, mxConnectionHandler
 adjustParents, mxCompactTreeLayout
 AFTER_ADD_VERTEX
 afterDecode
 afterEncode
 alert, mxUtils
 aliases, mxCodecRegistry
 align, mxCellOverlay
 ALIGN_BOTTOM, mxConstants
 ALIGN_CELLS
 ALIGN_CENTER, mxConstants
 ALIGN_LEFT, mxConstants
 ALIGN_MIDDLE, mxConstants
 ALIGN_RIGHT, mxConstants
 ALIGN_TOP, mxConstants
 alignCells, mxGraph
 alignRanks, mxCompactTreeLayout
 allowAutoPanning, mxGraph
 allowDanglingEdges, mxGraph
 allowedToRun, mxFastOrganicLayout
 allowEval
 allowHandleBoundsCheck
 allowLoops, mxGraph
 allowNegativeCoordinates, mxGraph
 alreadyConnectedResource, mxGraph
 alt, mxImageBundle
 alternateBounds, mxGeometry
 alternateEdgeStyle, mxGraph
 angleOffset, mxRadialTreeLayout
 animateCell, mxMorphing
 animateChanges
 antiAlias
 API Specification
 apply
 arcTo, mxAbstractCanvas2D
 arcToCurves, mxUtils
 arrangeGroups, mxGraphLayout
 ARROW_BLOCK, mxConstants
 ARROW_CLASSIC, mxConstants
 ARROW_DIAMOND, mxConstants
 ARROW_OPEN, mxConstants
 ARROW_OVAL, mxConstants
 ARROW_SIZE, mxConstants
 ARROW_SPACING, mxConstants
 ARROW_WIDTH, mxConstants
 askZoomResource, mxEditor
 aspect, mxStencil
 async, mxXmlRequest
 attachParent, mxCompactTreeLayout
 attr, mxMultiplicity
 Attribute Cycling, mxEditor
 augmentBoundingBox
 autoExpand, mxPopupMenu
 autoExtend, mxGraph
 Autolayout, mxEditor
 autoOrigin, mxPrintPreview
 autoRadius, mxRadialTreeLayout
 autoSaveDelay, mxAutoSaveManager
 autoSaveThreshold, mxAutoSaveManager
 autoSaveThrottle, mxAutoSaveManager
 autoscroll, mxDragSource
 autoScroll, mxGraph
 autoSize, mxCellEditor
 autoSizeCell, mxGraph
 autoSizeCells, mxGraph
 autoSizeCellsOnAdd, mxGraph
 avoid, mxEdgeLabelLayout
-
Specifies if absolute line heights should be used (px) in CSS.
mxCellState.prototype.absoluteOffset
mxPoint that holds the absolute offset.
mxCellState.prototype.absolutePoints
Holds an array of mxPoints that represent the absolute points of an edge.
mxEditor.prototype.actions
Maps from actionnames to actions, which are functions taking the editor and the cell as arguments.
mxWindow.prototype.activate = function()
Puts the window on top of all other windows.
Specifies the event name for activate.
Fires after a window is activated.
mxGraphModel.prototype.add = function(parent,
child,
index)
Adds the specified child to the parent at the given index using mxChildChange and adds the change to the current transaction.
mxRectangle.prototype.add = function(rect)
Adds the given rectangle to this rectangle.
add: function(basename,
lan)
Adds the default and current language properties file for the specified basename.
mxUndoableEdit.prototype.add = function(change)
Adds the specified change to this edit.
Specifies the event name for add.
Fires if a cell has been added to the selection.
Fires after an undoable edit was added to the history.
Specifies the event name for addCells.
Fires between begin- and endUpdate in addCells.
Specifies the event name for addOverlay.
Fires after an overlay is added in addCellOverlay.
Fires between begin- and endUpdate in addVertex.
Specifies the event name for addVertex.
mxDefaultPopupMenu.prototype.addAction = function(menu,
editor,
lab,
icon,
funct,
action,
cell,
parent,
iconCls)
Helper method to bind an action to a new menu item.
mxEditor.prototype.addAction = function (actionname,
funct)
Binds the specified actionname to the specified function.
mxDefaultToolbar.prototype.addActionCombo = function(title)
Helper method to invoke mxToolbar.addActionCombo on toolbar using the given title and return the resulting DOM node.
mxDefaultToolbar.prototype.addActionOption = function(combo,
title,
action)
Binds the given action to a option with the specified label in the given combo.
mxEditor.prototype.addActions = function ()
Adds the built-in actions to the editor instance.
addAlias: function(classname,
codecname)
Adds an alias for mapping a classname to a codecname.
mxGraph.prototype.addAllEdges = function(cells)
Returns an array with the given cells and all edges that are connected to a cell or one of its descendants.
mxToolbar.prototype.addBreak = function()
Adds a break to the container.
addButton: function(lab,
funct)
Adds a button to the console using the given label and function.
mxForm.prototype.addButtons = function(okFunct,
cancelFunct)
Helper method to add an OK and Cancel button using the respective functions.
mxGraph.prototype.addCell = function(cell,
parent,
index,
source,
target)
Adds the cell to the parent and connects it to the given source and target terminals.
mxGraphSelectionModel.prototype.addCell = function(cell)
Adds the given mxCell to the selection and fires a select event.
mxGraph.prototype.addCellOverlay = function(cell,
overlay)
Adds an mxCellOverlay for the specified cell.
mxGraph.prototype.addCells = function(cells,
parent,
index,
source,
target)
Adds the cells to the parent at the given index, connecting each cell to the optional source and target terminal.
mxGraphSelectionModel.prototype.addCells = function(cells)
Adds the given array of mxCells to the selection and fires a select event.
mxForm.prototype.addCheckbox = function(name,
value)
Adds a checkbox for the given name and value and returns the textfield.
mxDefaultToolbar.prototype.addCombo = function()
Helper method to invoke mxToolbar.addCombo on toolbar and return the resulting DOM node.
mxForm.prototype.addCombo = function(name,
isMultiSelect,
size)
Adds a combo for the given name and returns the combo.
mxToolbar.prototype.addCombo = function(style)
Adds and returns a new SELECT element using the given style.
mxGraph.prototype.addEdge = function(edge,
parent,
source,
target,
index)
Adds the edge to the parent and connects it to the given source and target terminals.
mxCellStatePreview.prototype.addEdges = function(state)
mxEdgeHandler.prototype.addEnabled
Specifies if adding bends by shift-click is enabled.
mxSwimlaneManager.prototype.addEnabled
Specifies if newly added cells should be resized to match the size of their existing siblings.
mxForm.prototype.addField = function(name,
input)
Adds a new row with the name and the input field in two columns and returns the given input.
addGestureListeners: function(node,
startListener,
moveListener,
endListener)
Adds the given listeners for touch, mouse and/or pointer events.
mxPrintPreview.prototype.addGraphFragment = function(dx,
dy,
scale,
pageNumber,
div,
clip)
Adds a graph fragment to the given div.
mxGraph.prototype.addImageBundle = function(bundle)
Adds the specified mxImageBundle.
mxDefaultToolbar.prototype.addItem = function(title,
icon,
action,
pressed)
Adds a new item that executes the given action in editor.
mxPopupMenu.prototype.addItem = function(title,
image,
funct,
parent,
iconCls,
enabled)
Adds the given item to the given parent item.
mxToolbar.prototype.addItem = function(title,
icon,
funct,
pressedIcon,
style,
factoryMethod)
Adds the given function as an image with the specified title and icon and returns the new image node.
mxDefaultPopupMenu.prototype.addItems = function(editor,
menu,
cell,
evt,
conditions,
item,
parent)
Recursively adds the given items and all of its children into the given menu.
mxToolbar.prototype.addLine = function()
Adds a horizontal line to the container.
addListener: function()
Binds the function to the specified event on the given element.
mxEventSource.prototype.addListener = function(name,
funct)
Binds the specified function to the given event name.
addMarker: function(type,
funct)
Adds a factory method that updates a given endpoint and returns a function to paint the marker onto the given canvas.
mxDefaultToolbar.prototype.addMode = function(title,
icon,
mode,
pressed,
funct)
Creates an item for selecting the given mode in the editor’s graph.
mxToolbar.prototype.addMode = function(title,
icon,
funct,
pressedIcon,
style,
toggle)
Adds a new item to the toolbar.
mxGraph.prototype.addMouseListener = function(listener)
Adds a listener to the graph event dispatch loop.
mxSvgCanvas2D.prototype.addNode = function(filled,
stroked)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.addNode = function(filled,
stroked)
Adds the current node to the root.
mxObjectCodec.prototype.addObjectValue = function(obj,
fieldname,
value,
template)
Sets the decoded child node as a value of the given object.
mxAbstractCanvas2D.prototype.addOp = function()
Adds the given operation to the path.
mxDefaultToolbar.prototype.addOption = function(combo,
title,
value)
Helper method to invoke mxToolbar.addOption on toolbar and return the resulting DOM node that represents the option.
mxForm.prototype.addOption = function(combo,
label,
value,
isSelected)
Adds an option for the given label to the specified combo.
mxToolbar.prototype.addOption = function(combo,
title,
value)
Adds and returns a new OPTION element inside the given SELECT element.
mxEdgeHandler.prototype.addPoint = function(state,
evt)
Adds a control point for the given state and event.
mxEdgeHandler.prototype.addPointAt = function(state,
x,
y)
Adds a control point at the given point.
mxShape.prototype.addPoints = function(c,
pts,
rounded,
arcSize,
close)
Paints the given points with rounded corners.
mxDefaultToolbar.prototype.addPrototype = function(title,
icon,
ptype,
pressed,
insert,
toggle)
Creates an item for inserting a clone of the specified prototype cell into the editor’s graph.
mxGraph.prototype.addSelectionCell = function(cell)
Adds the given cell to the selection.
mxGraph.prototype.addSelectionCells = function(cells)
Adds the given cells to the selection.
mxDefaultToolbar.prototype.addSeparator = function(icon)
Adds a vertical separator using the optional icon.
mxPopupMenu.prototype.addSeparator = function(parent,
force)
Adds a horizontal separator in the given parent item or the top-level menu if no parent is specified.
mxToolbar.prototype.addSeparator = function(icon)
Adds the specifies image as a separator.
addStencil: function(name,
stencil)
Adds the given mxStencil.
addStylename: function(style,
stylename)
Adds the specified stylename to the given style if it does not already contain the stylename.
mxToolbar.prototype.addSwitchMode = function(title,
icon,
funct,
pressedIcon,
style)
Adds a new selectable item to the toolbar.
mxEditor.prototype.addTemplate = function (name,
template)
Adds the specified template under the given name in templates.
mxForm.prototype.addText = function(name,
value)
Adds a textfield for the given name and value and returns the textfield.
mxForm.prototype.addTextarea = function(name,
value,
rows)
Adds a textarea for the given name and value and returns the textarea.
mxSvgCanvas2D.prototype.addTextBackground = function(node,
str,
x,
y,
w,
h,
align,
valign,
overflow)
Background color and border
addTransparentBackgroundFilter: function(node)
Adds a transparent background to the filter of the given node.
mxEditor.prototype.addVertex = function (parent,
vertex,
x,
y)
Adds the given vertex as a child of parent at the specified x and y coordinate and fires an addVertex event.
mxConnectionHandler.prototype.addWaypointForEvent = function(me)
Adds the waypoint for the given event to waypoints.
mxCompactTreeLayout.prototype.adjustParents = function()
Adjust parent cells whose child geometries have changed.
Fires after a vertex was inserted and selected in addVertex.
Specifies the event name for afterAddVertex.
codec.afterDecode = function(dec,
node,
obj)
Restores object state in the child change.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
mxObjectCodec.prototype.afterDecode = function(dec,
node,
obj)
Hook for subclassers to post-process the object after decoding.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
codec.afterEncode = function(enc,
obj,
node)
Encodes an mxCell and wraps the XML up inside the XML of the user object (inversion).
codec.afterEncode = function(enc,
obj,
node)
Encodes the child recusively and adds the result to the given node.
mxObjectCodec.prototype.afterEncode = function(enc,
obj,
node)
Hook for subclassers to post-process the node for the given object after encoding and return the post-processed node.
alert: function(message)
Displayss the given alert in a new dialog.
Maps from classnames to codecnames.
mxCellOverlay.prototype.align
Holds the horizontal alignment for the overlay.
Constant for bottom vertical alignment.
Specifies the event name for alignCells.
Fires between begin- and endUpdate in alignCells.
Constant for center horizontal alignment.
Constant for left horizontal alignment.
Constant for middle vertical alignment.
Constant for right horizontal alignment.
Constant for top vertical alignment.
mxGraph.prototype.alignCells = function(align,
cells,
param)
Aligns the given cells vertically or horizontally according to the given alignment using the optional parameter as the coordinate.
mxCompactTreeLayout.prototype.alignRanks
Whether or not the tops of cells in each rank should be aligned across the rank
mxGraph.prototype.allowAutoPanning
Specifies if panning via panGraph should be allowed to implement autoscroll if no scrollbars are available in scrollPointToVisible.
mxGraph.prototype.allowDanglingEdges
Specifies if edges with disconnected terminals are allowed in the graph.
mxFastOrganicLayout.prototype.allowedToRun
Boolean flag that specifies if the layout is allowed to run.
mxDefaultToolbarCodec.allowEval
Static global switch that specifies if the use of eval is allowed for evaluating text content.
mxGraphView.prototype.allowEval
Specifies if string values in cell styles should be evaluated using mxUtils.eval.
mxObjectCodec.allowEval
Static global switch that specifies if expressions in arrays are allowed.
Static global switch that specifies if the use of eval is allowed for evaluating text content.
mxStylesheetCodec.allowEval
Static global switch that specifies if the use of eval is allowed for evaluating text content.
mxEdgeHandler.prototype.allowHandleBoundsCheck
Specifies if the bounds of handles should be used for hit-detection in IE Default is true.
mxVertexHandler.prototype.allowHandleBoundsCheck
Specifies if the bounds of handles should be used for hit-detection in IE or if tolerance > 0.
mxGraph.prototype.allowLoops
Specifies if loops (aka self-references) are allowed.
mxGraph.prototype.allowNegativeCoordinates
Specifies if negative coordinates for vertices are allowed.
mxGraph.prototype.alreadyConnectedResource
Specifies the resource key for the error message to be displayed in non-multigraphs when two vertices are already connected.
Specifies if the fallback representation should be returned.
mxGeometry.prototype.alternateBounds
Stores alternate values for x, y, width and height in a rectangle.
mxGraph.prototype.alternateEdgeStyle
Specifies the alternate edge style to be used if the main control point on an edge is being doubleclicked.
mxRadialTreeLayout.prototype.angleOffset
The initial offset to compute the angle position.
mxMorphing.prototype.animateCell = function(cell,
move,
recurse)
Animates the given cell state using mxCellStatePreview.moveState.
animateChanges: function(graph,
changes,
done)
Asynchronous animated move operation.
animateChanges: function(graph,
changes)
See mxEffects.animateChanges.
mxCellRenderer.prototype.antiAlias
Anti-aliasing option for new shapes.
mxShape.prototype.antiAlias
Rendering hint for configuring the canvas.
This JavaScript library is divided into 8 packages.
mxCompactTreeLayout.prototype.apply = function(node,
bounds)
mxImageShape.prototype.apply = function(state)
Overrides mxShape.apply to replace the fill and stroke colors with the respective values from mxConstants.STYLE_IMAGE_BACKGROUND and mxConstants.STYLE_IMAGE_BORDER.
mxShape.prototype.apply = function(state)
Applies the style of the given mxCellState to the shape.
mxText.prototype.apply = function(state)
Extends mxShape to updat the text styles.
mxAbstractCanvas2D.prototype.arcTo = function(rx,
ry,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Adds the given arc to the current path.
arcToCurves: function(x0,
y0,
r1,
r2,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Converts the given arc to a series of curves.
mxGraphLayout.prototype.arrangeGroups = function(cells,
border,
topBorder,
rightBorder,
bottomBorder,
leftBorder)
Shortcut to mxGraph.updateGroupBounds with moveGroup set to true.
Constant for block arrow markers.
Constant for classic arrow markers.
Constant for diamond arrow markers.
Constant for open arrow markers.
Constant for oval arrow markers.
Defines the size of the arrowhead in the arrow shape.
Defines the spacing between the arrow shape and its terminals.
Defines the width of the arrow shape.
mxEditor.prototype.askZoomResource
Specifies the resource key for the zoom dialog.
mxStencil.prototype.aspect
Holds the aspect of the shape.
mxXmlRequest.prototype.async
Boolean indicating if the request is asynchronous.
mxCompactTreeLayout.prototype.attachParent = function(node,
height)
mxMultiplicity.prototype.attr
Optional string that specifies the attributename to be passed to mxUtils.isNode to check if the rule applies to a cell.
mxConnector.prototype.augmentBoundingBox = function(bbox)
Augments the bounding box with the strokewidth and shadow offsets.
mxShape.prototype.augmentBoundingBox = function(bbox)
Augments the bounding box with the strokewidth and shadow offsets.
mxPopupMenu.prototype.autoExpand
Specifies if submenus should be expanded on mouseover.
mxGraph.prototype.autoExtend
Specifies if the size of the graph should be automatically extended if the mouse goes near the container edge while dragging.
mxPrintPreview.prototype.autoOrigin
Specifies if the origin should be automatically computed based on the top, left corner of the actual diagram contents.
mxRadialTreeLayout.prototype.autoRadius
Specifies if the radios should be computed automatically
mxAutoSaveManager.prototype.autoSaveDelay
Minimum amount of seconds between two consecutive autosaves.
mxAutoSaveManager.prototype.autoSaveThreshold
Minimum amount of ignored changes before an autosave.
mxAutoSaveManager.prototype.autoSaveThrottle
Minimum amount of seconds between two consecutive autosaves triggered by more than autoSaveThreshhold changes within a timespan of less than autoSaveDelay seconds.
mxDragSource.prototype.autoscroll
Specifies if the graph should scroll automatically.
mxGraph.prototype.autoScroll
Specifies if the graph should automatically scroll if the mouse goes near the container edge while dragging.
mxCellEditor.prototype.autoSize
Specifies if the textarea should be resized while the text is being edited.
mxGraph.prototype.autoSizeCell = function(cell,
recurse)
Removes the given cells from the graph including all connected edges if includeEdges is true.
mxGraph.prototype.autoSizeCells
Specifies if the graph should automatically update the cell size after an edit.
mxGraph.prototype.autoSizeCellsOnAdd
Specifies if autoSize style should be applied when cells are added.
mxEdgeLabelLayout.prototype.avoid = function(edge,
vertex)
Places the labels of the given edges.
+
Specifies if absolute line heights should be used (px) in CSS.
mxCellState.prototype.absoluteOffset
mxPoint that holds the absolute offset.
mxCellState.prototype.absolutePoints
Holds an array of mxPoints that represent the absolute points of an edge.
mxEditor.prototype.actions
Maps from actionnames to actions, which are functions taking the editor and the cell as arguments.
mxWindow.prototype.activate = function()
Puts the window on top of all other windows.
Specifies the event name for activate.
Fires after a window is activated.
mxGraphModel.prototype.add = function(parent,
child,
index)
Adds the specified child to the parent at the given index using mxChildChange and adds the change to the current transaction.
mxRectangle.prototype.add = function(rect)
Adds the given rectangle to this rectangle.
add: function(basename,
lan)
Adds the default and current language properties file for the specified basename.
mxUndoableEdit.prototype.add = function(change)
Adds the specified change to this edit.
Specifies the event name for add.
Fires if a cell has been added to the selection.
Fires after an undoable edit was added to the history.
Specifies the event name for addCells.
Fires between begin- and endUpdate in addCells.
Specifies the event name for addOverlay.
Fires after an overlay is added in addCellOverlay.
Fires between begin- and endUpdate in addVertex.
Specifies the event name for addVertex.
mxDefaultPopupMenu.prototype.addAction = function(menu,
editor,
lab,
icon,
funct,
action,
cell,
parent,
iconCls)
Helper method to bind an action to a new menu item.
mxEditor.prototype.addAction = function (actionname,
funct)
Binds the specified actionname to the specified function.
mxDefaultToolbar.prototype.addActionCombo = function(title)
Helper method to invoke mxToolbar.addActionCombo on toolbar using the given title and return the resulting DOM node.
mxDefaultToolbar.prototype.addActionOption = function(combo,
title,
action)
Binds the given action to a option with the specified label in the given combo.
mxEditor.prototype.addActions = function ()
Adds the built-in actions to the editor instance.
addAlias: function(classname,
codecname)
Adds an alias for mapping a classname to a codecname.
mxGraph.prototype.addAllEdges = function(cells)
Returns an array with the given cells and all edges that are connected to a cell or one of its descendants.
mxToolbar.prototype.addBreak = function()
Adds a break to the container.
addButton: function(lab,
funct)
Adds a button to the console using the given label and function.
mxForm.prototype.addButtons = function(okFunct,
cancelFunct)
Helper method to add an OK and Cancel button using the respective functions.
mxGraph.prototype.addCell = function(cell,
parent,
index,
source,
target)
Adds the cell to the parent and connects it to the given source and target terminals.
mxGraphSelectionModel.prototype.addCell = function(cell)
Adds the given mxCell to the selection and fires a select event.
mxGraph.prototype.addCellOverlay = function(cell,
overlay)
Adds an mxCellOverlay for the specified cell.
mxGraph.prototype.addCells = function(cells,
parent,
index,
source,
target)
Adds the cells to the parent at the given index, connecting each cell to the optional source and target terminal.
mxGraphSelectionModel.prototype.addCells = function(cells)
Adds the given array of mxCells to the selection and fires a select event.
mxForm.prototype.addCheckbox = function(name,
value)
Adds a checkbox for the given name and value and returns the textfield.
mxDefaultToolbar.prototype.addCombo = function()
Helper method to invoke mxToolbar.addCombo on toolbar and return the resulting DOM node.
mxForm.prototype.addCombo = function(name,
isMultiSelect,
size)
Adds a combo for the given name and returns the combo.
mxToolbar.prototype.addCombo = function(style)
Adds and returns a new SELECT element using the given style.
mxGraph.prototype.addEdge = function(edge,
parent,
source,
target,
index)
Adds the edge to the parent and connects it to the given source and target terminals.
mxCellStatePreview.prototype.addEdges = function(state)
mxEdgeHandler.prototype.addEnabled
Specifies if adding bends by shift-click is enabled.
mxSwimlaneManager.prototype.addEnabled
Specifies if newly added cells should be resized to match the size of their existing siblings.
mxForm.prototype.addField = function(name,
input)
Adds a new row with the name and the input field in two columns and returns the given input.
addGestureListeners: function(node,
startListener,
moveListener,
endListener)
Adds the given listeners for touch, mouse and/or pointer events.
mxPrintPreview.prototype.addGraphFragment = function(dx,
dy,
scale,
pageNumber,
div,
clip)
Adds a graph fragment to the given div.
mxGraph.prototype.addImageBundle = function(bundle)
Adds the specified mxImageBundle.
mxDefaultToolbar.prototype.addItem = function(title,
icon,
action,
pressed)
Adds a new item that executes the given action in editor.
mxPopupMenu.prototype.addItem = function(title,
image,
funct,
parent,
iconCls,
enabled,
active)
Adds the given item to the given parent item.
mxToolbar.prototype.addItem = function(title,
icon,
funct,
pressedIcon,
style,
factoryMethod)
Adds the given function as an image with the specified title and icon and returns the new image node.
mxDefaultPopupMenu.prototype.addItems = function(editor,
menu,
cell,
evt,
conditions,
item,
parent)
Recursively adds the given items and all of its children into the given menu.
mxToolbar.prototype.addLine = function()
Adds a horizontal line to the container.
addListener: function()
Binds the function to the specified event on the given element.
mxEventSource.prototype.addListener = function(name,
funct)
Binds the specified function to the given event name.
addMarker: function(type,
funct)
Adds a factory method that updates a given endpoint and returns a function to paint the marker onto the given canvas.
mxDefaultToolbar.prototype.addMode = function(title,
icon,
mode,
pressed,
funct)
Creates an item for selecting the given mode in the editor’s graph.
mxToolbar.prototype.addMode = function(title,
icon,
funct,
pressedIcon,
style,
toggle)
Adds a new item to the toolbar.
mxGraph.prototype.addMouseListener = function(listener)
Adds a listener to the graph event dispatch loop.
mxSvgCanvas2D.prototype.addNode = function(filled,
stroked)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.addNode = function(filled,
stroked)
Adds the current node to the root.
mxObjectCodec.prototype.addObjectValue = function(obj,
fieldname,
value,
template)
Sets the decoded child node as a value of the given object.
mxAbstractCanvas2D.prototype.addOp = function()
Adds the given operation to the path.
mxDefaultToolbar.prototype.addOption = function(combo,
title,
value)
Helper method to invoke mxToolbar.addOption on toolbar and return the resulting DOM node that represents the option.
mxForm.prototype.addOption = function(combo,
label,
value,
isSelected)
Adds an option for the given label to the specified combo.
mxToolbar.prototype.addOption = function(combo,
title,
value)
Adds and returns a new OPTION element inside the given SELECT element.
mxEdgeHandler.prototype.addPoint = function(state,
evt)
Adds a control point for the given state and event.
mxEdgeHandler.prototype.addPointAt = function(state,
x,
y)
Adds a control point at the given point.
mxShape.prototype.addPoints = function(c,
pts,
rounded,
arcSize,
close)
Paints the given points with rounded corners.
mxDefaultToolbar.prototype.addPrototype = function(title,
icon,
ptype,
pressed,
insert,
toggle)
Creates an item for inserting a clone of the specified prototype cell into the editor’s graph.
mxGraph.prototype.addSelectionCell = function(cell)
Adds the given cell to the selection.
mxGraph.prototype.addSelectionCells = function(cells)
Adds the given cells to the selection.
mxDefaultToolbar.prototype.addSeparator = function(icon)
Adds a vertical separator using the optional icon.
mxPopupMenu.prototype.addSeparator = function(parent,
force)
Adds a horizontal separator in the given parent item or the top-level menu if no parent is specified.
mxToolbar.prototype.addSeparator = function(icon)
Adds the specifies image as a separator.
addStencil: function(name,
stencil)
Adds the given mxStencil.
addStylename: function(style,
stylename)
Adds the specified stylename to the given style if it does not already contain the stylename.
mxToolbar.prototype.addSwitchMode = function(title,
icon,
funct,
pressedIcon,
style)
Adds a new selectable item to the toolbar.
mxEditor.prototype.addTemplate = function (name,
template)
Adds the specified template under the given name in templates.
mxForm.prototype.addText = function(name,
value)
Adds a textfield for the given name and value and returns the textfield.
mxForm.prototype.addTextarea = function(name,
value,
rows)
Adds a textarea for the given name and value and returns the textarea.
mxSvgCanvas2D.prototype.addTextBackground = function(node,
str,
x,
y,
w,
h,
align,
valign,
overflow)
Background color and border
addTransparentBackgroundFilter: function(node)
Adds a transparent background to the filter of the given node.
mxEditor.prototype.addVertex = function (parent,
vertex,
x,
y)
Adds the given vertex as a child of parent at the specified x and y coordinate and fires an addVertex event.
mxConnectionHandler.prototype.addWaypointForEvent = function(me)
Adds the waypoint for the given event to waypoints.
mxCompactTreeLayout.prototype.adjustParents = function()
Adjust parent cells whose child geometries have changed.
Fires after a vertex was inserted and selected in addVertex.
Specifies the event name for afterAddVertex.
codec.afterDecode = function(dec,
node,
obj)
Restores object state in the child change.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
mxObjectCodec.prototype.afterDecode = function(dec,
node,
obj)
Hook for subclassers to post-process the object after decoding.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
codec.afterDecode = function(dec,
node,
obj)
Restores the state by assigning the previous value.
codec.afterEncode = function(enc,
obj,
node)
Encodes an mxCell and wraps the XML up inside the XML of the user object (inversion).
codec.afterEncode = function(enc,
obj,
node)
Encodes the child recusively and adds the result to the given node.
mxObjectCodec.prototype.afterEncode = function(enc,
obj,
node)
Hook for subclassers to post-process the node for the given object after encoding and return the post-processed node.
alert: function(message)
Displayss the given alert in a new dialog.
Maps from classnames to codecnames.
mxCellOverlay.prototype.align
Holds the horizontal alignment for the overlay.
Constant for bottom vertical alignment.
Specifies the event name for alignCells.
Fires between begin- and endUpdate in alignCells.
Constant for center horizontal alignment.
Constant for left horizontal alignment.
Constant for middle vertical alignment.
Constant for right horizontal alignment.
Constant for top vertical alignment.
mxGraph.prototype.alignCells = function(align,
cells,
param)
Aligns the given cells vertically or horizontally according to the given alignment using the optional parameter as the coordinate.
mxCompactTreeLayout.prototype.alignRanks
Whether or not the tops of cells in each rank should be aligned across the rank
mxGraph.prototype.allowAutoPanning
Specifies if panning via panGraph should be allowed to implement autoscroll if no scrollbars are available in scrollPointToVisible.
mxGraph.prototype.allowDanglingEdges
Specifies if edges with disconnected terminals are allowed in the graph.
mxFastOrganicLayout.prototype.allowedToRun
Boolean flag that specifies if the layout is allowed to run.
mxDefaultToolbarCodec.allowEval
Static global switch that specifies if the use of eval is allowed for evaluating text content.
mxGraphView.prototype.allowEval
Specifies if string values in cell styles should be evaluated using mxUtils.eval.
mxObjectCodec.allowEval
Static global switch that specifies if expressions in arrays are allowed.
Static global switch that specifies if the use of eval is allowed for evaluating text content.
mxStylesheetCodec.allowEval
Static global switch that specifies if the use of eval is allowed for evaluating text content.
mxEdgeHandler.prototype.allowHandleBoundsCheck
Specifies if the bounds of handles should be used for hit-detection in IE Default is true.
mxVertexHandler.prototype.allowHandleBoundsCheck
Specifies if the bounds of handles should be used for hit-detection in IE or if tolerance > 0.
mxGraph.prototype.allowLoops
Specifies if loops (aka self-references) are allowed.
mxGraph.prototype.allowNegativeCoordinates
Specifies if negative coordinates for vertices are allowed.
mxGraph.prototype.alreadyConnectedResource
Specifies the resource key for the error message to be displayed in non-multigraphs when two vertices are already connected.
Specifies if the fallback representation should be returned.
mxGeometry.prototype.alternateBounds
Stores alternate values for x, y, width and height in a rectangle.
mxGraph.prototype.alternateEdgeStyle
Specifies the alternate edge style to be used if the main control point on an edge is being doubleclicked.
mxRadialTreeLayout.prototype.angleOffset
The initial offset to compute the angle position.
mxMorphing.prototype.animateCell = function(cell,
move,
recurse)
Animates the given cell state using mxCellStatePreview.moveState.
animateChanges: function(graph,
changes,
done)
Asynchronous animated move operation.
animateChanges: function(graph,
changes)
See mxEffects.animateChanges.
mxCellRenderer.prototype.antiAlias
Anti-aliasing option for new shapes.
mxShape.prototype.antiAlias
Rendering hint for configuring the canvas.
This JavaScript library is divided into 8 packages.
mxCompactTreeLayout.prototype.apply = function(node,
bounds)
mxImageShape.prototype.apply = function(state)
Overrides mxShape.apply to replace the fill and stroke colors with the respective values from mxConstants.STYLE_IMAGE_BACKGROUND and mxConstants.STYLE_IMAGE_BORDER.
mxShape.prototype.apply = function(state)
Applies the style of the given mxCellState to the shape.
mxText.prototype.apply = function(state)
Extends mxShape to updat the text styles.
mxAbstractCanvas2D.prototype.arcTo = function(rx,
ry,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Adds the given arc to the current path.
arcToCurves: function(x0,
y0,
r1,
r2,
angle,
largeArcFlag,
sweepFlag,
x,
y)
Converts the given arc to a series of curves.
mxGraphLayout.prototype.arrangeGroups = function(cells,
border,
topBorder,
rightBorder,
bottomBorder,
leftBorder)
Shortcut to mxGraph.updateGroupBounds with moveGroup set to true.
Constant for block arrow markers.
Constant for classic arrow markers.
Constant for diamond arrow markers.
Constant for open arrow markers.
Constant for oval arrow markers.
Defines the size of the arrowhead in the arrow shape.
Defines the spacing between the arrow shape and its terminals.
Defines the width of the arrow shape.
mxEditor.prototype.askZoomResource
Specifies the resource key for the zoom dialog.
mxStencil.prototype.aspect
Holds the aspect of the shape.
mxXmlRequest.prototype.async
Boolean indicating if the request is asynchronous.
mxCompactTreeLayout.prototype.attachParent = function(node,
height)
mxMultiplicity.prototype.attr
Optional string that specifies the attributename to be passed to mxUtils.isNode to check if the rule applies to a cell.
mxConnector.prototype.augmentBoundingBox = function(bbox)
Augments the bounding box with the strokewidth and shadow offsets.
mxShape.prototype.augmentBoundingBox = function(bbox)
Augments the bounding box with the strokewidth and shadow offsets.
mxPopupMenu.prototype.autoExpand
Specifies if submenus should be expanded on mouseover.
mxGraph.prototype.autoExtend
Specifies if the size of the graph should be automatically extended if the mouse goes near the container edge while dragging.
mxPrintPreview.prototype.autoOrigin
Specifies if the origin should be automatically computed based on the top, left corner of the actual diagram contents.
mxRadialTreeLayout.prototype.autoRadius
Specifies if the radios should be computed automatically
mxAutoSaveManager.prototype.autoSaveDelay
Minimum amount of seconds between two consecutive autosaves.
mxAutoSaveManager.prototype.autoSaveThreshold
Minimum amount of ignored changes before an autosave.
mxAutoSaveManager.prototype.autoSaveThrottle
Minimum amount of seconds between two consecutive autosaves triggered by more than autoSaveThreshhold changes within a timespan of less than autoSaveDelay seconds.
mxDragSource.prototype.autoscroll
Specifies if the graph should scroll automatically.
mxGraph.prototype.autoScroll
Specifies if the graph should automatically scroll if the mouse goes near the container edge while dragging.
mxCellEditor.prototype.autoSize
Specifies if the textarea should be resized while the text is being edited.
mxGraph.prototype.autoSizeCell = function(cell,
recurse)
Removes the given cells from the graph including all connected edges if includeEdges is true.
mxGraph.prototype.autoSizeCells
Specifies if the graph should automatically update the cell size after an edit.
mxGraph.prototype.autoSizeCellsOnAdd
Specifies if autoSize style should be applied when cells are added.
mxEdgeLabelLayout.prototype.avoid = function(edge,
vertex)
Places the labels of the given edges.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General10.html b/docs/js-api/index/General10.html index 950d0f4e7..971a21286 100644 --- a/docs/js-api/index/General10.html +++ b/docs/js-api/index/General10.html @@ -11,17 +11,17 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
J
 jettyPositions, mxCoordinateAssignment
 join, mxCompactTreeLayout
K
 keepEdgesInBackground, mxGraph
 keepEdgesInForeground, mxGraph
 keepFirstLocation, mxStackLayout
 keepOnTop, mxCellHighlight
 keepSelectionVisibleOnZoom, mxGraph
 keyDown, mxKeyHandler
 keyHandler, mxEditor
L
 LABEL_CHANGED
 LABEL_HANDLE, mxEvent
 LABEL_HANDLE_FILLCOLOR, mxConstants
 LABEL_HANDLE_SIZE, mxConstants
 labelChanged, mxGraph
 labels, mxPopupMenu
 labelShape, mxEdgeHandler
 labelsVisible
 language, mxClient
 languages, mxClient
 lastForegroundHtmlNode, mxGraphView
 lastForegroundNode, mxGraphView
 lastHtmlNode, mxGraphView
 lastNode, mxGraphView
 lastSavedResource, mxEditor
 lastSnapshot, mxAutoSaveManager
 lastTouchTime, mxGraph
 lastTouchX, mxGraph
 lastX, mxAbstractCanvas2D
 lastY, mxAbstractCanvas2D
 layeringStage
 layout
 LAYOUT_CELLS
 layoutCells, mxLayoutManager
 layoutDiagram, mxEditor
 layoutLeaf, mxCompactTreeLayout
 layouts, mxCompositeLayout
 layoutSwimlanes, mxEditor
 leave, mxLog
 legacyControlPosition, mxCellRenderer
 legacySpacing, mxCellRenderer
 length, mxCellState
 levelDistance
 limitX, mxCoordinateAssignment
 LINE_ARCSIZE, mxConstants
 LINE_HEIGHT, mxConstants
 lineFeed, mxEditor
 lineHeightCorrection, mxSvgCanvas2D
 lineOp
 lineTo
 link
 linkAction, mxUtils
 linkInvoke, mxUtils
 livePreview, mxVertexHandler
 load, mxUtils
 loadDefaultBundle, mxResources
 loadInto, mxUtils
 localEdgeProcessing
 LOCKED_HANDLE_FILLCOLOR, mxConstants
 lookup, mxCodec
 Loop, mxEdgeStyle
 ltrim, mxUtils
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
J
 jettyPositions, mxCoordinateAssignment
 join, mxCompactTreeLayout
K
 keepEdgesInBackground, mxGraph
 keepEdgesInForeground, mxGraph
 keepFirstLocation, mxStackLayout
 keepOnTop, mxCellHighlight
 keepSelectionVisibleOnZoom, mxGraph
 keyDown, mxKeyHandler
 keyHandler, mxEditor
L
 LABEL_CHANGED
 LABEL_HANDLE, mxEvent
 LABEL_HANDLE_FILLCOLOR, mxConstants
 LABEL_HANDLE_SIZE, mxConstants
 labelChanged, mxGraph
 labels, mxPopupMenu
 labelShape, mxEdgeHandler
 labelsVisible
 language, mxClient
 languages, mxClient
 lastForegroundHtmlNode, mxGraphView
 lastForegroundNode, mxGraphView
 lastHtmlNode, mxGraphView
 lastNode, mxGraphView
 lastSavedResource, mxEditor
 lastSnapshot, mxAutoSaveManager
 lastTouchTime, mxGraph
 lastTouchX, mxGraph
 lastX, mxAbstractCanvas2D
 lastY, mxAbstractCanvas2D
 layeringStage
 layout
 LAYOUT_CELLS
 layoutCells, mxLayoutManager
 layoutDiagram, mxEditor
 layoutLeaf, mxCompactTreeLayout
 layouts, mxCompositeLayout
 layoutSwimlanes, mxEditor
 leave, mxLog
 legacyControlPosition, mxCellRenderer
 legacySpacing, mxCellRenderer
 length, mxCellState
 levelDistance
 limitX, mxCoordinateAssignment
 LINE_ARCSIZE, mxConstants
 LINE_HEIGHT, mxConstants
 lineFeed, mxEditor
 lineHeightCorrection, mxSvgCanvas2D
 lineOp
 lineTo
 link
 linkAction, mxUtils
 linkInvoke, mxUtils
 livePreview, mxVertexHandler
 load, mxUtils
 loadDefaultBundle, mxResources
 loadInto, mxUtils
 localEdgeProcessing
 LOCKED_HANDLE_FILLCOLOR, mxConstants
 lookup, mxCodec
 Loop, mxEdgeStyle
 ltrim, mxUtils
-
mxCoordinateAssignment.prototype.jettyPositions
Map of internal edges and (x,y) pair of positions of the start and end jetty for that edge where it connects to the source and target vertices.
mxCompactTreeLayout.prototype.join = function(node)
+
mxCoordinateAssignment.prototype.jettyPositions
Map of internal edges and (x,y) pair of positions of the start and end jetty for that edge where it connects to the source and target vertices.
mxCompactTreeLayout.prototype.join = function(node)
-
mxGraph.prototype.keepEdgesInBackground
Specifies if edges should appear in the background regardless of their order in the model.
mxGraph.prototype.keepEdgesInForeground
Specifies if edges should appear in the foreground regardless of their order in the model.
mxStackLayout.prototype.keepFirstLocation
Boolean indicating if the location of the first cell should be kept, that is, it will not be moved to x0 or y0.
mxCellHighlight.prototype.keepOnTop
Specifies if the highlights should appear on top of everything else in the overlay pane.
mxGraph.prototype.keepSelectionVisibleOnZoom
Specifies if the viewport should automatically contain the selection cells after a zoom operation.
mxKeyHandler.prototype.keyDown = function(evt)
Handles the event by invoking the function bound to the respective keystroke if mxGraph.isEnabled, isEnabled and isGraphEvent all return true for the given event and mxGraph.isEditing returns false.
mxEditor.prototype.keyHandler
Holds a mxDefaultKeyHandler for handling keyboard events.
+
mxGraph.prototype.keepEdgesInBackground
Specifies if edges should appear in the background regardless of their order in the model.
mxGraph.prototype.keepEdgesInForeground
Specifies if edges should appear in the foreground regardless of their order in the model.
mxStackLayout.prototype.keepFirstLocation
Boolean indicating if the location of the first cell should be kept, that is, it will not be moved to x0 or y0.
mxCellHighlight.prototype.keepOnTop
Specifies if the highlights should appear on top of everything else in the overlay pane.
mxGraph.prototype.keepSelectionVisibleOnZoom
Specifies if the viewport should automatically contain the selection cells after a zoom operation.
mxKeyHandler.prototype.keyDown = function(evt)
Handles the event by invoking the function bound to the respective keystroke if mxGraph.isEnabled, isEnabled and isGraphEvent all return true for the given event and mxGraph.isEditing returns false.
mxEditor.prototype.keyHandler
Holds a mxDefaultKeyHandler for handling keyboard events.
-
Specifies the event name for labelChanged.
Fires between begin- and endUpdate in cellLabelChanged.
Index for the label handle in an mxMouseEvent.
Defines the color to be used for the label handle fill color.
Defines the default size for label handles.
mxGraph.prototype.labelChanged = function(cell,
value,
evt)
Sets the label of the specified cell to the given value using cellLabelChanged and fires mxEvent.LABEL_CHANGED while the transaction is in progress.
mxPopupMenu.prototype.labels
Specifies if any labels should be visible.
mxEdgeHandler.prototype.labelShape
Holds the mxShape that represents the label position.
mxGraph.prototype.labelsVisible
Specifies if labels should be visible.
mxOutline.prototype.labelsVisible
Specifies if labels should be visible in the outline.
Defines the language of the client, eg.
Defines the optional array of all supported language extensions.
mxGraphView.prototype.lastForegroundHtmlNode
During validation, this contains the last edge HTML DOM node that was processed.
mxGraphView.prototype.lastForegroundNode
During validation, this contains the last edge’s DOM node that was processed.
mxGraphView.prototype.lastHtmlNode
During validation, this contains the last HTML DOM node that was processed.
mxGraphView.prototype.lastNode
During validation, this contains the last DOM node that was processed.
mxEditor.prototype.lastSavedResource
Specifies the resource key for the last saved info.
mxAutoSaveManager.prototype.lastSnapshot
Used for autosaving.
mxGraph.prototype.lastTouchTime
Holds the time of the last touch event for double click detection.
Holds the x-coordinate of the last touch event for double tap detection.
mxAbstractCanvas2D.prototype.lastX
Holds the last x coordinate.
mxAbstractCanvas2D.prototype.lastY
Holds the last y coordinate.
mxHierarchicalLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxSwimlaneLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxCompactTreeLayout.prototype.layout = function(node)
Starts the actual compact tree layout algorithm at the given node.
mxCoordinateAssignment.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
mxMedianHybridCrossingReduction.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
mxMinimumCycleRemover.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
mxParallelEdgeLayout.prototype.layout = function(parallels)
Lays out the parallel edges in the given array.
mxSwimlaneOrdering.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
Specifies the event name for layoutCells.
Fires between begin- and endUpdate after all cells have been layouted in layoutCells.
mxLayoutManager.prototype.layoutCells = function(cells)
Executes all layouts which have been scheduled during the changes.
mxEditor.prototype.layoutDiagram
Specifies if the top-level elements in the diagram should be layed out using a vertical or horizontal stack depending on the setting of horizontalFlow.
mxCompactTreeLayout.prototype.layoutLeaf = function(node)
mxCompositeLayout.prototype.layouts
Holds the array of mxGraphLayouts that this layout contains.
mxEditor.prototype.layoutSwimlanes
Specifies if the children of swimlanes should be layed out, either vertically or horizontally depending on horizontalFlow.
leave: function(string,
t0)
Writes the specified string to the console if TRACE is true and computes the difference between the current time and t0 in milliseconds.
mxCellRenderer.prototype.legacyControlPosition
Specifies if the folding icon should ignore the horizontal orientation of a swimlane.
mxCellRenderer.prototype.legacySpacing
Specifies if spacing and label position should be ignored if overflow is fill or width.
mxCellState.prototype.length
Caches the length of an edge.
mxCompactTreeLayout.prototype.levelDistance
Holds the levelDistance.
mxRadialTreeLayout.prototype.levelDistance
Holds the levelDistance.
mxCoordinateAssignment.prototype.limitX
The maximum x value this positioning lays up to
Defines the size of the arcs for rounded edges.
Defines the default line height for text labels.
Character to be used for encoding linefeeds in save.
mxSvgCanvas2D.prototype.lineHeightCorrection
Correction factor for mxConstants.LINE_HEIGHT in HTML output.
mxAbstractCanvas2D.prototype.lineOp
Contains the string used for moving in paths.
mxVmlCanvas2D.prototype.lineOp
Contains the string used for moving in paths.
mxAbstractCanvas2D.prototype.lineTo = function(x,
y)
Draws a line to the given coordinates.
mxXmlCanvas2D.prototype.lineTo = function(x,
y)
Draws a line to the given coordinates.
link: function(rel,
href,
doc)
Adds a link node to the head of the document.
link: function(parent,
text,
funct,
pad)
Adds a hyperlink to the specified parent and invokes the given function when the link is clicked.
linkAction: function(parent,
text,
editor,
action,
pad)
Adds a hyperlink to the specified parent that invokes action on the specified editor.
linkInvoke: function(parent,
text,
editor,
functName,
arg,
pad)
Adds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.
mxVertexHandler.prototype.livePreview
Specifies if resize should change the cell in-place.
load: function(url)
Loads the specified URL synchronously and returns the mxXmlRequest.
Specifies if the default file for a given basename should be loaded.
loadInto: function(url,
doc,
onload)
Loads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.
mxCompactTreeLayout.prototype.localEdgeProcessing = function(node)
Moves the specified node and all of its children by the given amount.
mxCoordinateAssignment.prototype.localEdgeProcessing = function(model)
Separates the x position of edges as they connect to vertices
Defines the color to be used for the locked handle fill color.
mxCodec.prototype.lookup = function(id)
Hook for subclassers to implement a custom lookup mechanism for cell IDs.
Loop: function (state,
source,
target,
points,
result)
Implements a self-reference, aka.
ltrim: function(str,
chars)
Strips all whitespaces from the beginning of the string.
+
Specifies the event name for labelChanged.
Fires between begin- and endUpdate in cellLabelChanged.
Index for the label handle in an mxMouseEvent.
Defines the color to be used for the label handle fill color.
Defines the default size for label handles.
mxGraph.prototype.labelChanged = function(cell,
value,
evt)
Sets the label of the specified cell to the given value using cellLabelChanged and fires mxEvent.LABEL_CHANGED while the transaction is in progress.
mxPopupMenu.prototype.labels
Specifies if any labels should be visible.
mxEdgeHandler.prototype.labelShape
Holds the mxShape that represents the label position.
mxGraph.prototype.labelsVisible
Specifies if labels should be visible.
mxOutline.prototype.labelsVisible
Specifies if labels should be visible in the outline.
Defines the language of the client, eg.
Defines the optional array of all supported language extensions.
mxGraphView.prototype.lastForegroundHtmlNode
During validation, this contains the last edge HTML DOM node that was processed.
mxGraphView.prototype.lastForegroundNode
During validation, this contains the last edge’s DOM node that was processed.
mxGraphView.prototype.lastHtmlNode
During validation, this contains the last HTML DOM node that was processed.
mxGraphView.prototype.lastNode
During validation, this contains the last DOM node that was processed.
mxEditor.prototype.lastSavedResource
Specifies the resource key for the last saved info.
mxAutoSaveManager.prototype.lastSnapshot
Used for autosaving.
mxGraph.prototype.lastTouchTime
Holds the time of the last touch event for double click detection.
Holds the x-coordinate of the last touch event for double tap detection.
mxAbstractCanvas2D.prototype.lastX
Holds the last x coordinate.
mxAbstractCanvas2D.prototype.lastY
Holds the last y coordinate.
mxHierarchicalLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxSwimlaneLayout.prototype.layeringStage = function()
Implements first stage of a Sugiyama layout.
mxCompactTreeLayout.prototype.layout = function(node)
Starts the actual compact tree layout algorithm at the given node.
mxCoordinateAssignment.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
mxMedianHybridCrossingReduction.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
mxMinimumCycleRemover.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
mxParallelEdgeLayout.prototype.layout = function(parallels)
Lays out the parallel edges in the given array.
mxSwimlaneOrdering.prototype.layout
Reference to the enclosing mxHierarchicalLayout.
Specifies the event name for layoutCells.
Fires between begin- and endUpdate after all cells have been layouted in layoutCells.
mxLayoutManager.prototype.layoutCells = function(cells)
Executes all layouts which have been scheduled during the changes.
mxEditor.prototype.layoutDiagram
Specifies if the top-level elements in the diagram should be layed out using a vertical or horizontal stack depending on the setting of horizontalFlow.
mxCompactTreeLayout.prototype.layoutLeaf = function(node)
mxCompositeLayout.prototype.layouts
Holds the array of mxGraphLayouts that this layout contains.
mxEditor.prototype.layoutSwimlanes
Specifies if the children of swimlanes should be layed out, either vertically or horizontally depending on horizontalFlow.
leave: function(string,
t0)
Writes the specified string to the console if TRACE is true and computes the difference between the current time and t0 in milliseconds.
mxCellRenderer.prototype.legacyControlPosition
Specifies if the folding icon should ignore the horizontal orientation of a swimlane.
mxCellRenderer.prototype.legacySpacing
Specifies if spacing and label position should be ignored if overflow is fill or width.
mxCellState.prototype.length
Caches the length of an edge.
mxCompactTreeLayout.prototype.levelDistance
Holds the levelDistance.
mxRadialTreeLayout.prototype.levelDistance
Holds the levelDistance.
mxCoordinateAssignment.prototype.limitX
The maximum x value this positioning lays up to
Defines the size of the arcs for rounded edges.
Defines the default line height for text labels.
Character to be used for encoding linefeeds in save.
mxSvgCanvas2D.prototype.lineHeightCorrection
Correction factor for mxConstants.LINE_HEIGHT in HTML output.
mxAbstractCanvas2D.prototype.lineOp
Contains the string used for moving in paths.
mxVmlCanvas2D.prototype.lineOp
Contains the string used for moving in paths.
mxAbstractCanvas2D.prototype.lineTo = function(x,
y)
Draws a line to the given coordinates.
mxXmlCanvas2D.prototype.lineTo = function(x,
y)
Draws a line to the given coordinates.
link: function(rel,
href,
doc)
Adds a link node to the head of the document.
link: function(parent,
text,
funct,
pad)
Adds a hyperlink to the specified parent and invokes the given function when the link is clicked.
linkAction: function(parent,
text,
editor,
action,
pad)
Adds a hyperlink to the specified parent that invokes action on the specified editor.
linkInvoke: function(parent,
text,
editor,
functName,
arg,
pad)
Adds a hyperlink to the specified parent that invokes the specified function on the editor passing along the specified argument.
mxVertexHandler.prototype.livePreview
Specifies if resize should change the cell in-place.
load: function(url)
Loads the specified URL synchronously and returns the mxXmlRequest.
Specifies if the default file for a given basename should be loaded.
loadInto: function(url,
doc,
onload)
Loads the specified URL asynchronously into the specified document, invoking onload after the document has been loaded.
mxCompactTreeLayout.prototype.localEdgeProcessing = function(node)
Moves the specified node and all of its children by the given amount.
mxCoordinateAssignment.prototype.localEdgeProcessing = function(model)
Separates the x position of edges as they connect to vertices
Defines the color to be used for the locked handle fill color.
mxCodec.prototype.lookup = function(id)
Hook for subclassers to implement a custom lookup mechanism for cell IDs.
Loop: function (state,
source,
target,
points,
result)
Implements a self-reference, aka.
ltrim: function(str,
chars)
Strips all whitespaces from the beginning of the string.
@@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General11.html b/docs/js-api/index/General11.html index bac936af2..c85858c70 100644 --- a/docs/js-api/index/General11.html +++ b/docs/js-api/index/General11.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
M
 maintainEdgeParent, mxGraphModel
 maintainParentLocation
 maintainSwimlanes, mxEditor
 makeDraggable, mxUtils
 manageLabelHandle, mxEdgeHandler
 manageSizers, mxVertexHandler
 map, mxDictionary
 mapping, mxObjectCodec
 marginBottom, mxStackLayout
 marginLeft, mxStackLayout
 marginRight, mxStackLayout
 marginTop, mxStackLayout
 mark
 MARK
 markCell, mxCellMarker
 markedState, mxCellMarker
 marker
 markers, mxMarker
 matchHtmlAlignment, mxSvgCanvas2D
 max, mxMultiplicity
 MAX_HOTSPOT_SIZE, mxConstants
 maxCells, mxGraphHandler
 maxChainDfs, mxSwimlaneModel
 maxFitScale, mxGraph
 maxHandlers, mxSelectionCellsHandler
 maxHeight, mxCylinder
 MAXIMIZE
 maximizeImage, mxWindow
 maximumContainerSize, mxGraph
 maximumGraphBounds, mxGraph
 maxIterations
 maxNoImprovementIterations, mxMedianHybridCrossingReduction
 maxRank
 maxRankHeight, mxCompactTreeLayout
 maxScale, mxPanningHandler
 MedianCellSorter
 medianPos, mxCoordinateAssignment
 medianRank, mxMedianHybridCrossingReduction
 medianValue
 medianXValue, mxCoordinateAssignment
 merge, mxCompactTreeLayout
 mergeChildren, mxGraphModel
 mergeRemoveEnabled, mxEdgeHandler
 method, mxXmlRequest
 min, mxMultiplicity
 MIN_HOTSPOT_SIZE, mxConstants
 minDistanceLimit, mxFastOrganicLayout
 minDistanceLimitSquared, mxFastOrganicLayout
 minEdgeJetty
 minFitScale, mxGraph
 MINIMIZE
 minimizeImage, mxWindow
 minimumContainerSize, mxGraph
 minimumGraphSize, mxGraph
 minimumSize
 minNode, mxCoordinateAssignment
 minPageBreakDist, mxGraph
 minPath, mxCoordinateAssignment
 minRank, mxGraphAbstractHierarchyCell
 minResize, mxCellEditor
 minScale, mxPanningHandler
 mixedModeHtml, mxShape
 mod, mxUtils
 model
 modified
 MOUSE_DOWN, mxEvent
 MOUSE_MOVE, mxEvent
 MOUSE_UP, mxEvent
 mouseDown
 mouseDownCounter, mxConnectionHandler
 mouseListeners, mxGraph
 mouseMove
 mouseUp
 move, mxGuide
 MOVE
 MOVE_CELLS
 MOVE_END
 MOVE_START
 moveCell
 moveCells
 moveChildren, mxVertexHandler
 moveCircle, mxCircleLayout
 moveEnabled, mxGraphHandler
 moveHandler
 moveIconBack, mxConnectionHandler
 moveIconFront, mxConnectionHandler
 moveLabel, mxEdgeHandler
 moveNode, mxCompactTreeLayout
 moveOp
 moveParent
 movePreviewAway, mxConnectionHandler
 movePropertiesDialog, mxEditor
 moveState, mxCellStatePreview
 moveTo
 moveTree, mxCompactTreeLayout
 multigraph, mxGraph
 multiplicities, mxGraph
 mxAbstractCanvas2D
 mxActor
 mxAnimation
 mxArrow
 mxAutoSaveManager
 mxCell
 mxCellAttributeChange
 mxCellCodec
 mxCellEditor
 mxCellHighlight
 mxCellMarker
 mxCellOverlay
 mxCellPath
 mxCellRenderer
 mxCellState
 mxCellStatePreview
 mxCellTracker
 mxChildChange
 mxChildChangeCodec
 mxCircleLayout
 mxClient
 mxClipboard
 mxCloud
 mxCodec
 mxCodecRegistry
 mxCollapseChange
 mxCompactTreeLayout
 mxCompositeLayout
 mxConnectionConstraint
 mxConnectionHandler
 mxConnector
 mxConstants
 mxConstraintHandler
 mxCoordinateAssignment
 mxCurrentRootChange
 mxCylinder
 mxDefaultKeyHandler
 mxDefaultKeyHandlerCodec
 mxDefaultPopupMenu
 mxDefaultPopupMenuCodec
 mxDefaultToolbar
 mxDefaultToolbarCodec
 mxDictionary
 mxDivResizer
 mxDoubleEllipse
 mxDragSource
 mxEdgeHandler
 mxEdgeLabelLayout
 mxEdgeSegmentHandler.js
 mxEdgeStyle
 mxEditor
 mxEditorCodec
 mxEffects
 mxElbowEdgeHandler
 mxEllipse
 mxEvent
 mxEventObject
 mxEventSource
 mxFastOrganicLayout
 mxForm
 mxGenericChangeCodec
 mxGeometry
 mxGeometryChange
 mxGraph
 mxgraph=seen
 mxGraphAbstractHierarchyCell
 mxGraphCodec
 mxGraphHandler
 mxGraphHierarchyEdge
 mxGraphHierarchyModel
 mxGraphHierarchyNode
 mxGraphLayout
 mxGraphModel
 mxGraphSelectionModel
 mxGraphView
 mxGraphViewCodec
 mxGuide
 mxHexagon
 mxHierarchicalLayout
 mxHierarchicalLayoutStage
 mxImage
 mxImageBundle
 mxImageExport
 mxImageShape
 mxKeyHandler
 mxLabel
 mxLayoutManager
 mxLine
 mxLoadResources, mxClient
 mxLoadStylesheets, mxClient
 mxLog
 mxMarker
 mxMedianHybridCrossingReduction
 mxMinimumCycleRemover
 mxModelCodec
 mxMorphing
 mxMouseEvent
 mxMultiplicity
 mxObjectCodec
 mxObjectIdentity
 mxOutline
 mxPanningHandler
 mxPanningManager
 mxParallelEdgeLayout
 mxPartitionLayout
 mxPerimeter
 mxPoint
 mxPolyline
 mxPopupMenu
 mxPopupMenuHandler
 mxPrintPreview
 mxRadialTreeLayout
 mxRectangle
 mxRectangleShape
 mxResourceExtension, mxClient
 mxResources
 mxRhombus
 mxRootChange
 mxRootChangeCodec
 mxRubberband
 mxSelectionCellsHandler
 mxSelectionChange
 mxShape
 mxSpaceManager
 mxStackLayout
 mxStencil
 mxStencilRegistry
 mxStyleChange
 mxStyleRegistry
 mxStylesheet
 mxStylesheetCodec
 mxSvgCanvas2D
 mxSwimlane
 mxSwimlaneLayout
 mxSwimlaneManager
 mxSwimlaneModel
 mxSwimlaneOrdering
 mxTemporaryCellStates
 mxTerminalChange
 mxTerminalChangeCodec
 mxText
 mxToolbar
 mxTooltipHandler
 mxTransient, mxCell
 mxTriangle
 mxUndoableEdit
 mxUndoManager
 mxUrlConverter
 mxUtils
 mxValueChange
 mxVertexHandler
 mxVisibleChange
 mxVmlCanvas2D
 mxWindow
 mxXmlCanvas2D
 mxXmlRequest
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
M
 maintainEdgeParent, mxGraphModel
 maintainParentLocation
 maintainSwimlanes, mxEditor
 makeDraggable, mxUtils
 manageLabelHandle, mxEdgeHandler
 manageSizers, mxVertexHandler
 map, mxDictionary
 mapping, mxObjectCodec
 marginBottom, mxStackLayout
 marginLeft, mxStackLayout
 marginRight, mxStackLayout
 marginTop, mxStackLayout
 mark
 MARK
 markCell, mxCellMarker
 markedState, mxCellMarker
 marker
 markers, mxMarker
 matchHtmlAlignment, mxSvgCanvas2D
 max, mxMultiplicity
 MAX_HOTSPOT_SIZE, mxConstants
 maxCells, mxGraphHandler
 maxChainDfs, mxSwimlaneModel
 maxFitScale, mxGraph
 maxHandlers, mxSelectionCellsHandler
 maxHeight, mxCylinder
 MAXIMIZE
 maximizeImage, mxWindow
 maximumContainerSize, mxGraph
 maximumGraphBounds, mxGraph
 maxIterations
 maxNoImprovementIterations, mxMedianHybridCrossingReduction
 maxRank
 maxRankHeight, mxCompactTreeLayout
 maxScale, mxPanningHandler
 MedianCellSorter
 medianPos, mxCoordinateAssignment
 medianRank, mxMedianHybridCrossingReduction
 medianValue
 medianXValue, mxCoordinateAssignment
 merge, mxCompactTreeLayout
 mergeChildren, mxGraphModel
 mergeRemoveEnabled, mxEdgeHandler
 method, mxXmlRequest
 min, mxMultiplicity
 MIN_HOTSPOT_SIZE, mxConstants
 minDistanceLimit, mxFastOrganicLayout
 minDistanceLimitSquared, mxFastOrganicLayout
 minEdgeJetty
 minFitScale, mxGraph
 MINIMIZE
 minimizeImage, mxWindow
 minimumContainerSize, mxGraph
 minimumGraphSize, mxGraph
 minimumSize
 minNode, mxCoordinateAssignment
 minPageBreakDist, mxGraph
 minPath, mxCoordinateAssignment
 minRank, mxGraphAbstractHierarchyCell
 minResize, mxCellEditor
 minScale, mxPanningHandler
 mixedModeHtml, mxShape
 mod, mxUtils
 model
 modified
 MOUSE_DOWN, mxEvent
 MOUSE_MOVE, mxEvent
 MOUSE_UP, mxEvent
 mouseDown
 mouseDownCounter, mxConnectionHandler
 mouseListeners, mxGraph
 mouseMove
 mouseUp
 move, mxGuide
 MOVE
 MOVE_CELLS
 MOVE_END
 MOVE_START
 moveCell
 moveCells
 moveChildren, mxVertexHandler
 moveCircle, mxCircleLayout
 moveEnabled, mxGraphHandler
 moveHandler
 moveIconBack, mxConnectionHandler
 moveIconFront, mxConnectionHandler
 moveLabel, mxEdgeHandler
 moveNode, mxCompactTreeLayout
 moveOp
 moveParent
 movePreviewAway, mxConnectionHandler
 movePropertiesDialog, mxEditor
 moveState, mxCellStatePreview
 moveTo
 moveTree, mxCompactTreeLayout
 multigraph, mxGraph
 multiplicities, mxGraph
 mxAbstractCanvas2D
 mxActor
 mxAnimation
 mxArrow
 mxAutoSaveManager
 mxCell
 mxCellAttributeChange
 mxCellCodec
 mxCellEditor
 mxCellHighlight
 mxCellMarker
 mxCellOverlay
 mxCellPath
 mxCellRenderer
 mxCellState
 mxCellStatePreview
 mxCellTracker
 mxChildChange
 mxChildChangeCodec
 mxCircleLayout
 mxClient
 mxClipboard
 mxCloud
 mxCodec
 mxCodecRegistry
 mxCollapseChange
 mxCompactTreeLayout
 mxCompositeLayout
 mxConnectionConstraint
 mxConnectionHandler
 mxConnector
 mxConstants
 mxConstraintHandler
 mxCoordinateAssignment
 mxCurrentRootChange
 mxCylinder
 mxDefaultKeyHandler
 mxDefaultKeyHandlerCodec
 mxDefaultPopupMenu
 mxDefaultPopupMenuCodec
 mxDefaultToolbar
 mxDefaultToolbarCodec
 mxDictionary
 mxDivResizer
 mxDoubleEllipse
 mxDragSource
 mxEdgeHandler
 mxEdgeLabelLayout
 mxEdgeSegmentHandler.js
 mxEdgeStyle
 mxEditor
 mxEditorCodec
 mxEffects
 mxElbowEdgeHandler
 mxEllipse
 mxEvent
 mxEventObject
 mxEventSource
 mxFastOrganicLayout
 mxForm
 mxGenericChangeCodec
 mxGeometry
 mxGeometryChange
 mxGraph
 mxgraph=seen
 mxGraphAbstractHierarchyCell
 mxGraphCodec
 mxGraphHandler
 mxGraphHierarchyEdge
 mxGraphHierarchyModel
 mxGraphHierarchyNode
 mxGraphLayout
 mxGraphModel
 mxGraphSelectionModel
 mxGraphView
 mxGraphViewCodec
 mxGuide
 mxHexagon
 mxHierarchicalLayout
 mxHierarchicalLayoutStage
 mxImage
 mxImageBundle
 mxImageExport
 mxImageShape
 mxKeyHandler
 mxLabel
 mxLayoutManager
 mxLine
 mxLoadResources, mxClient
 mxLoadStylesheets, mxClient
 mxLog
 mxMarker
 mxMedianHybridCrossingReduction
 mxMinimumCycleRemover
 mxModelCodec
 mxMorphing
 mxMouseEvent
 mxMultiplicity
 mxObjectCodec
 mxObjectIdentity
 mxOutline
 mxPanningHandler
 mxPanningManager
 mxParallelEdgeLayout
 mxPartitionLayout
 mxPerimeter
 mxPoint
 mxPolyline
 mxPopupMenu
 mxPopupMenuHandler
 mxPrintPreview
 mxRadialTreeLayout
 mxRectangle
 mxRectangleShape
 mxResourceExtension, mxClient
 mxResources
 mxRhombus
 mxRootChange
 mxRootChangeCodec
 mxRubberband
 mxSelectionCellsHandler
 mxSelectionChange
 mxShape
 mxSpaceManager
 mxStackLayout
 mxStencil
 mxStencilRegistry
 mxStyleChange
 mxStyleRegistry
 mxStylesheet
 mxStylesheetCodec
 mxSvgCanvas2D
 mxSwimlane
 mxSwimlaneLayout
 mxSwimlaneManager
 mxSwimlaneModel
 mxSwimlaneOrdering
 mxTemporaryCellStates
 mxTerminalChange
 mxTerminalChangeCodec
 mxText
 mxToolbar
 mxTooltipHandler
 mxTransient, mxCell
 mxTriangle
 mxUndoableEdit
 mxUndoManager
 mxUrlConverter
 mxUtils
 mxValueChange
 mxVertexHandler
 mxVisibleChange
 mxVmlCanvas2D
 mxWindow
 mxXmlCanvas2D
 mxXmlRequest
-
mxGraphModel.prototype.maintainEdgeParent
Specifies if edges should automatically be moved into the nearest common ancestor of their terminals.
mxCompactTreeLayout.prototype.maintainParentLocation
Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout.
mxCompactTreeLayout.prototype.maintainParentLocation
Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout.
mxEditor.prototype.maintainSwimlanes
Specifies if the swimlanes should be kept at the same width or height depending on the setting of horizontalFlow.
makeDraggable: function(element,
graphF,
funct,
dragElement,
dx,
dy,
autoscroll,
scalePreview,
highlightDropTargets,
getDropTarget)
Configures the given DOM element to act as a drag source for the specified graph.
mxEdgeHandler.prototype.manageLabelHandle
Specifies if the label handle should be moved if it intersects with another handle.
mxVertexHandler.prototype.manageSizers
Specifies if sizers should be hidden and spaced if the vertex is small.
Stores the (key, value) pairs in this dictionary.
mxObjectCodec.prototype.mapping
Maps from from fieldnames to XML attribute names.
mxStackLayout.prototype.marginBottom
Top margin for the child area.
mxStackLayout.prototype.marginLeft
Top margin for the child area.
mxStackLayout.prototype.marginRight
Top margin for the child area.
mxStackLayout.prototype.marginTop
Top margin for the child area.
Marks the markedState and fires a mark event.
mxCellMarker.prototype.mark = function()
Marks the markedState and fires a mark event.
Fires after a cell has been marked or unmarked.
Specifies the event name for mark.
mxCellMarker.prototype.markCell = function(cell,
color)
Marks the given cell using the given color, or validColor if no color is specified.
mxCellMarker.prototype.markedState
Holds the marked mxCellState.
mxConnectionHandler.prototype.marker
Holds the mxTerminalMarker used for finding source and target cells.
mxEdgeHandler.prototype.marker
Holds the mxTerminalMarker which is used for highlighting terminals.
Maps from markers names to functions to paint the markers.
mxSvgCanvas2D.prototype.matchHtmlAlignment
Specifies if plain text output should match the vertical HTML alignment.
mxMultiplicity.prototype.max
Defines the maximum number of connections for which this rule applies.
Defines the maximum size in pixels of the portion of the cell which is to be used as a connectable region.
mxGraphHandler.prototype.maxCells
Defines the maximum number of cells to paint subhandles for.
mxSwimlaneModel.prototype.maxChainDfs = function(parent,
root,
connectingEdge,
seen,
chainCount)
Performs a depth first search on the internal hierarchy model.
mxGraph.prototype.maxFitScale
Specifies the maximum scale to be applied in fit.
mxSelectionCellsHandler.prototype.maxHandlers
Defines the maximum number of handlers to paint individually.
mxCylinder.prototype.maxHeight
Defines the maximum height of the top and bottom part of the cylinder shape.
Specifies the event name for maximize.
Fires after the window is maximized.
mxWindow.prototype.maximizeImage
URL of the image to be used for the maximize icon in the titlebar.
mxGraph.prototype.maximumContainerSize
mxRectangle that specifies the maximum size of the container if resizeContainer is true.
mxGraph.prototype.maximumGraphBounds
mxRectangle that specifies the area in which all cells in the diagram should be placed.
mxCoordinateAssignment.prototype.maxIterations
The number of heuristic iterations to run.
mxFastOrganicLayout.prototype.maxIterations
Total number of iterations to run the layout though.
mxMedianHybridCrossingReduction.prototype.maxIterations
The maximum number of iterations to perform whilst reducing edge crossings.
mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations
The total number of crossings found in the best configuration so far
mxGraphAbstractHierarchyCell.prototype.maxRank
The maximum rank this cell occupies.
mxGraphHierarchyModel.prototype.maxRank
Stores the largest rank number allocated
mxSwimlaneModel.prototype.maxRank
Stores the largest rank number allocated
mxCompactTreeLayout.prototype.maxRankHeight
An array of the maximum height of cells (relative to the layout direction) per rank
mxPanningHandler.prototype.maxScale
Specifies the maximum scale.
A utility class used to track cells whilst sorting occurs on the median values.
function MedianCellSorter()
Constructs a new median cell sorter.
mxCoordinateAssignment.prototype.medianPos = function(i,
model)
Performs one median positioning sweep in one direction
mxMedianHybridCrossingReduction.prototype.medianRank = function(rankValue,
downwardSweep)
Attempts to minimise the median placement of connected cells on this rank and one of the adjacent ranks
MedianCellSorter.prototype.medianValue
The weighted value of the cell stored.
mxMedianHybridCrossingReduction.prototype.medianValue = function(
   connectedCells,
   rankValue
)
Calculates the median rank order positioning for the specified cell using the connected cells on the specified rank.
mxCoordinateAssignment.prototype.medianXValue = function(connectedCells,
rankValue)
Calculates the median position of the connected cell on the specified rank
mxCompactTreeLayout.prototype.merge = function(p1,
p2)
mxGraphModel.prototype.mergeChildren = function(from,
to,
cloneAllEdges)
Merges the children of the given cell into the given target cell inside this model.
mxEdgeHandler.prototype.mergeRemoveEnabled
Specifies if removing bends by dropping them on other bends is enabled.
mxXmlRequest.prototype.method
Specifies the request method.
mxMultiplicity.prototype.min
Defines the minimum number of connections for which this rule applies.
Defines the minimum size in pixels of the portion of the cell which is to be used as a connectable region.
mxFastOrganicLayout.prototype.minDistanceLimit
Minimal distance limit.
mxFastOrganicLayout.prototype.minDistanceLimitSquared
Cached version of minDistanceLimit squared.
mxCompactTreeLayout.prototype.minEdgeJetty
The minimum distance for an edge jetty from a vertex.
mxCoordinateAssignment.prototype.minEdgeJetty
The minimum distance for an edge jetty from a vertex
mxGraph.prototype.minFitScale
Specifies the minimum scale to be applied in fit.
Specifies the event name for minimize.
Fires after the window is minimized.
mxWindow.prototype.minimizeImage
URL of the image to be used for the minimize icon in the titlebar.
mxGraph.prototype.minimumContainerSize
mxRectangle that specifies the minimum size of the container if resizeContainer is true.
mxGraph.prototype.minimumGraphSize
mxRectangle that specifies the minimum size of the graph.
mxGraphHandler.prototype.minimumSize
Specifies the minimum number of pixels for the width and height of a selection border.
mxWindow.prototype.minimumSize
mxRectangle that specifies the minimum width and height of the window.
mxCoordinateAssignment.prototype.minNode = function(model)
Performs one median positioning sweep in both directions
mxGraph.prototype.minPageBreakDist
Specifies the minimum distance for page breaks to be visible.
mxCoordinateAssignment.prototype.minPath = function(graph,
model)
Straightens out chains of virtual nodes where possibleacade to those stored after this layout processing step has completed.
mxGraphAbstractHierarchyCell.prototype.minRank
The minimum rank this cell occupies.
mxCellEditor.prototype.minResize
Defines the minimum width and height to be used in resize.
mxPanningHandler.prototype.minScale
Specifies the minimum scale.
Allow optimization by replacing VML with HTML.
mod: function(n,
m)
Returns the remainder of division of n by m.
mxGraph.prototype.model
Holds the mxGraphModel that contains the cells to be displayed.
mxHierarchicalLayout.prototype.model
The internal mxGraphHierarchyModel formed of the layout.
mxSwimlaneLayout.prototype.model
The internal mxSwimlaneModel formed of the layout.
mxCellEditor.prototype.modified
Specifies if the label has been modified.
mxEditor.prototype.modified
True if the graph has been modified since it was last saved.
Specifies the event name for mouseDown.
Specifies the event name for mouseMove.
Specifies the event name for mouseUp.
mxCellTracker.prototype.mouseDown = function(sender,
me)
Ignores the event.
mxConnectionHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a new connection.
mxDragSource.prototype.mouseDown = function(evt)
Returns the drop target for the given graph and coordinates.
mxEdgeHandler.prototype.mouseDown = function(sender,
me)
Handles the event by checking if a special element of the handler was clicked, in which case the index parameter is non-null.
mxGraphHandler.prototype.mouseDown = function(sender,
me)
Handles the event by selecing the given cell and creating a handle for it.
mxOutline.prototype.mouseDown = function(sender,
me)
Handles the event by starting a translation or zoom.
mxPanningHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating the panning.
mxPopupMenuHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating the panning.
mxRubberband.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a rubberband selection.
mxSelectionCellsHandler.prototype.mouseDown = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a rubberband selection.
mxVertexHandler.prototype.mouseDown = function(sender,
me)
Handles the event if a handle has been clicked.
mxConnectionHandler.prototype.mouseDownCounter
Counts the number of mouseDown events since the start.
mxGraph.prototype.mouseListeners
Holds the mouse event listeners.
mxCellTracker.prototype.mouseMove = function(sender,
me)
Handles the event by highlighting the cell under the mousepointer if it is over the hotspot region of the cell.
mxConnectionHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview edge or by highlighting a possible source or target terminal.
mxDragSource.prototype.mouseMove = function(evt)
Gets the graph for the given event using getGraphForEvent, updates the currentGraph, calling dragEnter and dragExit on the new and old graph, respectively, and invokes dragOver if currentGraph is not null.
mxEdgeHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview.
mxGraphHandler.prototype.mouseMove = function(sender,
me)
Handles the event by highlighting possible drop targets and updating the preview.
mxOutline.prototype.mouseMove = function(sender,
me)
Handles the event by previewing the viewrect in graph and updating the rectangle that represents the viewrect in the outline.
mxPanningHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the panning on the graph.
mxPopupMenuHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the panning on the graph.
mxRubberband.prototype.mouseMove = function(sender,
me)
Handles the event by updating therubberband selection.
mxSelectionCellsHandler.prototype.mouseMove = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the rubberband selection.
mxVertexHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview.
mxCellTracker.prototype.mouseUp = function(sender,
me)
Handles the event by reseting the highlight.
mxConnectionHandler.prototype.mouseUp = function(sender,
me)
Handles the event by inserting the new connection.
mxDragSource.prototype.mouseUp = function(evt)
Processes the mouse up event and invokes drop, dragExit and stopDrag as required.
mxEdgeHandler.prototype.mouseUp = function(sender,
me)
Handles the event to applying the previewed changes on the edge by using moveLabel, connect or changePoints.
mxGraphHandler.prototype.mouseUp = function(sender,
me)
Handles the event by applying the changes to the selection cells.
mxOutline.prototype.mouseUp = function(sender,
me)
Handles the event by applying the translation or zoom to graph.
mxPanningHandler.prototype.mouseUp = function(sender,
me)
Handles the event by setting the translation on the view or showing the popupmenu.
mxPopupMenuHandler.prototype.mouseUp = function(sender,
me)
Handles the event by setting the translation on the view or showing the popupmenu.
mxRubberband.prototype.mouseUp = function(sender,
me)
Handles the event by selecting the region of the rubberband using mxGraph.selectRegion.
mxSelectionCellsHandler.prototype.mouseUp = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseUp = function(sender,
me)
Handles the event by resetting the tooltip timer or hiding the existing tooltip.
mxVertexHandler.prototype.mouseUp = function(sender,
me)
Handles the event by applying the changes to the geometry.
mxGuide.prototype.move = function(bounds,
delta,
gridEnabled)
Moves the bounds by the given mxPoint and returnt the snapped point.
Specifies the event name for move.
Fires while the window is being moved.
Specifies the event name for moveCells.
Fires between begin- and endUpdate in moveCells.
Specifies the event name for moveEnd.
Fires after the window is moved.
Specifies the event name for moveStart.
Fires before the window is moved.
mxCompositeLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell by calling move on master or the first layout in layouts.
mxGraphLayout.prototype.moveCell = function(cell,
x,
y)
Notified when a cell is being moved in a parent that has automatic layout to update the cell state (eg.
mxPartitionLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell.
mxStackLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell.
mxGraph.prototype.moveCells = function(cells,
dx,
dy,
clone,
target,
evt)
Moves or clones the specified cells and moves the cells or clones by the given amount, adding them to the optional target cell.
mxGraphHandler.prototype.moveCells = function(cells,
dx,
dy,
clone,
target,
evt)
Moves the given cells by the specified amount.
mxVertexHandler.prototype.moveChildren = function(cell,
dx,
dy)
Moves the children of the given cell by the given vector.
mxCircleLayout.prototype.moveCircle
Boolean specifying if the circle should be moved to the top, left corner specified by x0 and y0.
mxGraphHandler.prototype.moveEnabled
Specifies if moving is enabled.
mxLayoutManager.prototype.moveHandler
Holds the function that handles the move event.
Holds the function that handles the move event.
mxConnectionHandler.prototype.moveIconBack
Specifies if icons should be moved to the back of the overlay pane.
mxConnectionHandler.prototype.moveIconFront
Specifies if icons should be displayed inside the graph container instead of the overlay pane.
mxEdgeHandler.prototype.moveLabel = function(edgeState,
x,
y)
Changes the coordinates for the label of the given edge.
mxCompactTreeLayout.prototype.moveNode = function(node,
dx,
dy)
Moves the specified node and all of its children by the given amount.
mxAbstractCanvas2D.prototype.moveOp
Contains the string used for moving in paths.
mxVmlCanvas2D.prototype.moveOp
Contains the string used for moving in paths.
mxHierarchicalLayout.prototype.moveParent
Specifies if the parent should be moved if resizeParent is enabled.
mxSwimlaneLayout.prototype.moveParent
Specifies if the parent should be moved if resizeParent is enabled.
mxConnectionHandler.prototype.movePreviewAway
Switch to enable moving the preview away from the mousepointer.
mxEditor.prototype.movePropertiesDialog
Specifies if the properties dialog should be automatically moved near the cell it is displayed for, otherwise the dialog is not moved.
mxCellStatePreview.prototype.moveState = function(state,
dx,
dy,
add,
includeEdges)
mxAbstractCanvas2D.prototype.moveTo = function(x,
y)
Moves the current path the given coordinates.
mxXmlCanvas2D.prototype.moveTo = function(x,
y)
Moves the current path the given point.
mxCompactTreeLayout.prototype.moveTree
Specifies if the tree should be moved to the top, left corner if it is inside a top-level layer.
mxGraph.prototype.multigraph
Specifies if multiple edges in the same direction between the same pair of vertices are allowed.
mxGraph.prototype.multiplicities
An array of mxMultiplicities describing the allowed connections in a graph.
Base class for all canvases.
function mxAbstractCanvas2D()
Constructs a new abstract canvas.
Extends mxShape to implement an actor shape.
function mxActor(bounds,
fill,
stroke,
strokewidth)
Constructs a new actor shape.
Implements a basic animation in JavaScript.
function mxAnimation(delay)
Constructs an animation.
Extends mxShape to implement an arrow shape.
function mxArrow(points,
fill,
stroke,
strokewidth,
arrowWidth,
spacing,
endSize)
Constructs a new arrow shape.
Manager for automatically saving diagrams.
function mxAutoSaveManager(graph)
Constructs a new automatic layout for the given graph.
Cells are the elements of the graph model.
function mxCell(value,
geometry,
style)
Constructs a new cell to be used in a graph model.
Action to change the attribute of a cell’s user object.
function mxCellAttributeChange(cell,
attribute,
value)
Constructs a change of a attribute of the DOM node stored as the value of the given mxCell.
Codec for mxCells.
In-place editor for the graph.
function mxCellEditor(graph)
Constructs a new in-place editor for the specified graph.
A helper class to highlight cells.
function mxCellHighlight(graph,
highlightColor,
strokeWidth,
dashed)
Constructs a cell highlight.
A helper class to process mouse locations and highlight cells.
function mxCellMarker(graph,
validColor,
invalidColor,
hotspot)
Constructs a new cell marker.
Extends mxEventSource to implement a graph overlay, represented by an icon and a tooltip.
function mxCellOverlay(image,
tooltip,
align,
verticalAlign,
offset,
cursor)
Constructs a new overlay using the given image and tooltip.
Implements a mechanism for temporary cell Ids.
Renders cells into a document object model.
function mxCellRenderer()
arrow, rectangle, ellipse, rhombus, image, line, label, cylinder, swimlane, connector, actor and cloud.
Represents the current state of a cell in a given mxGraphView.
function mxCellState(view,
cell,
style)
Constructs a new object that represents the current state of the given cell in the specified view.
Implements a live preview for moving cells.
function mxCellStatePreview(graph)
Constructs a move preview for the given graph.
Event handler that highlights cells.
function mxCellTracker(graph,
color,
funct)
Constructs an event handler that highlights cells.
Action to add or remove a child in a model.
function mxChildChange(model,
parent,
child,
index)
Constructs a change of a child in the specified model.
Codec for mxChildChanges.
Extends mxGraphLayout to implement a circluar layout for a given radius.
function mxCircleLayout(graph,
radius)
Constructs a new circular layout for the specified radius.
Bootstrapping mechanism for the mxGraph thin client.
Singleton that implements a clipboard for graph cells.
Extends mxActor to implement a cloud shape.
function mxCloud(bounds,
fill,
stroke,
strokewidth)
Constructs a new cloud shape.
XML codec for JavaScript object graphs.
function mxCodec(document)
Constructs an XML encoder/decoder for the specified owner document.
Singleton class that acts as a global registry for codecs.
Action to change a cell’s collapsed state in a model.
function mxCollapseChange(model,
cell,
collapsed)
Constructs a change of a collapsed state in the specified model.
Extends mxGraphLayout to implement a compact tree (Moen) algorithm.
function mxCompactTreeLayout(graph,
horizontal,
invert)
Constructs a new compact tree layout for the specified graph and orientation.
Constructs a new fast organic layout for the specified graph.
Constructs a new fast organic layout for the specified graph.
Allows to compose multiple layouts into a single layout.
function mxCompositeLayout(graph,
layouts,
master)
Constructs a new layout using the given layouts.
Defines an object that contains the constraints about how to connect one side of an edge to its terminal.
function mxConnectionConstraint(point,
perimeter)
Constructs a new connection constraint for the given point and boolean arguments.
Graph event handler that creates new connections.
function mxConnectionHandler(graph,
factoryMethod)
Constructs an event handler that connects vertices using the specified factory method to create the new edges.
Extends mxShape to implement a connector shape.
function mxConnector(points,
stroke,
strokewidth)
Constructs a new connector shape.
Defines various global constants.
Handles constraints on connection targets.
function mxConstraintHandler(graph)
Constructs an new constraint handler.
Sets the horizontal locations of node and edge dummy nodes on each layer.
function mxCoordinateAssignment(layout,
intraCellSpacing,
interRankCellSpacing,
orientation,
initialX,
parallelEdgeSpacing)
Creates a coordinate assignment.
Action to change the current root in a view.
function mxCurrentRootChange(view,
root)
Constructs a change of the current root in the given view.
Constructs a change of the current root in the given view.
Extends mxShape to implement an cylinder shape.
function mxCylinder(bounds,
fill,
stroke,
strokewidth)
Constructs a new cylinder shape.
Binds keycodes to actionnames in an editor.
function mxDefaultKeyHandler(editor)
Constructs a new default key handler for the mxEditor.graph in the given mxEditor.
Custom codec for configuring mxDefaultKeyHandlers.
Creates popupmenus for mouse events.
function mxDefaultPopupMenu(config)
Constructs a new popupmenu-factory based on given configuration.
Custom codec for configuring mxDefaultPopupMenus.
Toolbar for the editor.
function mxDefaultToolbar(container,
editor)
Constructs a new toolbar for the given container and editor.
Custom codec for configuring mxDefaultToolbars.
A wrapper class for an associative array with object keys.
Maintains the size of a div element in Internet Explorer.
function mxDivResizer(div,
container)
Constructs an object that maintains the size of a div element when the window is being resized.
Extends mxShape to implement a double ellipse shape.
function mxDoubleEllipse(bounds,
fill,
stroke,
strokewidth)
Constructs a new ellipse shape.
Wrapper to create a drag source from a DOM element so that the element can be dragged over a graph and dropped into the graph as a new cell.
function mxDragSource(element,
dropHandler)
Constructs a new drag source for the given element.
Graph event handler that reconnects edges and modifies control points and the edge label location.
function mxEdgeHandler(state)
Constructs an edge handler for the specified mxCellState.
Constructs an edge handler for the specified mxCellState.
Extends mxGraphLayout to implement an edge label layout.
function mxEdgeLabelLayout(graph,
radius)
Constructs a new edge label layout.
Provides various edge styles to be used as the values for mxConstants.STYLE_EDGE in a cell style.
Extends mxEventSource to implement a application wrapper for a graph that adds actions, I/O using mxCodec, auto-layout using mxLayoutManager, command history using undoManager, and standard dialogs and widgets, eg.
function mxEditor(config)
Constructs a new editor.
Codec for mxEditors.
Provides animation effects.
Graph event handler that reconnects edges and modifies control points and the edge label location.
Extends mxShape to implement an ellipse shape.
function mxEllipse(bounds,
fill,
stroke,
strokewidth)
Constructs a new ellipse shape.
Cross-browser DOM event support.
The mxEventObject is a wrapper for all properties of a single event.
function mxEventObject(name)
Constructs a new event object with the specified name.
Base class for objects that dispatch named events.
Constructs a new dictionary which allows object to be used as keys.
function mxEventSource(eventSource)
Constructs a new event source.
Extends mxGraphLayout to implement a fast organic layout algorithm.
A simple class for creating HTML forms.
function mxForm(className)
Creates a HTML table using the specified classname.
Codec for mxValueChanges, mxStyleChanges, mxGeometryChanges, mxCollapseChanges and mxVisibleChanges.
var mxGenericChangeCodec = function(obj,
variable)
Factory function that creates a mxObjectCodec for the specified change and fieldname.
Extends mxRectangle to represent the geometry of a cell.
function mxGeometry(x,
y,
width,
height)
Constructs a new object to describe the size and location of a vertex or the control points of an edge.
Action to change a cell’s geometry in a model.
function mxGeometryChange(model,
cell,
geometry)
Constructs a change of a geometry in the specified model.
Extends mxEventSource to implement a graph component for the browser.
function mxGraph(container,
model,
renderHint,
stylesheet)
Constructs a new mxGraph in the specified container.
Set when the editor is started.
An abstraction of an internal hierarchy node or edge
function mxGraphAbstractHierarchyCell()
Constructs a new hierarchical layout algorithm.
Codec for mxGraphs.
Graph event handler that handles selection.
function mxGraphHandler(graph)
Constructs an event handler that creates handles for the selection cells.
An abstraction of a hierarchical edge for the hierarchy layout
function mxGraphHierarchyEdge(edges)
Constructs a hierarchy edge
Internal model of a hierarchical graph.
function mxGraphHierarchyModel(layout,
vertices,
roots,
parent,
tightenToSource)
Creates an internal ordered graph model using the vertices passed in.
An abstraction of a hierarchical edge for the hierarchy layout
function mxGraphHierarchyNode(cell)
Constructs an internal node to represent the specified real graph cell
Base class for all layout algorithms in mxGraph.
function mxGraphLayout(graph)
Constructs a new layout using the given layouts.
Extends mxEventSource to implement a graph model.
function mxGraphModel(root)
Constructs a new graph model.
Implements the selection model for a graph.
function mxGraphSelectionModel(graph)
Constructs a new graph selection model for the given mxGraph.
Extends mxEventSource to implement a view for a graph.
function mxGraphView(graph)
Constructs a new view for the given mxGraph.
Custom encoder for mxGraphViews.
Implements the alignment of selection cells to other cells in the graph.
function mxGuide(graph,
states)
Constructs a new guide object.
Implementation of the hexagon shape.
function mxHexagon()
Constructs a new hexagon shape.
A hierarchical layout algorithm.
function mxHierarchicalLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
The specific layout interface for hierarchical layouts.
function mxHierarchicalLayoutStage()
Constructs a new hierarchical layout stage.
Encapsulates the URL, width and height of an image.
function mxImage(src,
width,
height)
Constructs a new image.
Maps from keys to base64 encoded images or file locations.
Creates a new image export instance to be used with an export canvas.
function mxImageExport()
Constructs a new image export.
Extends mxShape to implement an image shape.
function mxImageShape(bounds,
image,
fill,
stroke,
strokewidth)
Constructs a new image shape.
Event handler that listens to keystroke events.
function mxKeyHandler(graph,
target)
Constructs an event handler that executes functions bound to specific keystrokes.
Extends mxShape to implement an image shape with a label.
function mxLabel(bounds,
fill,
stroke,
strokewidth)
Constructs a new label shape.
function mxLayoutManager(graph)
Constructs a new automatic layout for the given graph.
Extends mxShape to implement a horizontal line shape.
function mxLine(bounds,
stroke,
strokewidth)
Constructs a new line shape.
Optional global config variable to toggle loading of the two resource files in mxGraph and mxEditor.
Optional global config variable to toggle loading of the CSS files when the library is initialized.
A singleton class that implements a simple console.
A static class that implements all markers for VML and SVG using a registry.
Sets the horizontal locations of node and edge dummy nodes on each layer.
function mxMedianHybridCrossingReduction(layout)
Creates a coordinate assignment.
An implementation of the first stage of the Sugiyama layout.
function mxMinimumCycleRemover(layout)
Creates a cycle remover for the given internal model.
Codec for mxGraphModels.
Implements animation for morphing cells.
function mxMorphing(graph,
steps,
ease,
delay)
Constructs an animation.
Base class for all mouse events in mxGraph.
function mxMouseEvent(evt,
state)
Constructs a new event object for the given arguments.
Defines invalid connections along with the error messages that they produce.
function mxMultiplicity(source,
type,
attr,
value,
min,
max,
validNeighbors,
countError,
typeError,
validNeighborsAllowed)
Instantiate class mxMultiplicity in order to describe allowed connections in a graph.
Generic codec for JavaScript objects that implements a mapping between JavaScript objects and XML nodes that maps each field or element to an attribute or child node, and vice versa.
function mxObjectCodec(template,
exclude,
idrefs,
mapping)
Constructs a new codec for the specified template object.
Identity for JavaScript objects.
Implements an outline (aka overview) for a graph.
function mxOutline(source,
container)
Constructs a new outline for the specified graph inside the given container.
Event handler that pans and creates popupmenus.
Constructs an event handler that creates a mxPopupMenu and pans the graph.
Implements a handler for panning.
Extends mxGraphLayout for arranging parallel edges.
Extends mxGraphLayout for partitioning the parent cell vertically or horizontally by filling the complete area with the child cells.
function mxPartitionLayout(graph,
horizontal,
spacing,
border)
Constructs a new stack layout layout for the specified graph, spacing, orientation and offset.
Provides various perimeter functions to be used in a style as the value of mxConstants.STYLE_PERIMETER.
Implements a 2-dimensional vector with double precision coordinates.
function mxPoint(x,
y)
Constructs a new point for the optional x and y coordinates.
Extends mxShape to implement a polyline (a line with multiple points).
function mxPolyline(points,
stroke,
strokewidth)
Constructs a new polyline shape.
Basic popup menu.
Constructs a popupmenu.
Event handler that creates popupmenus.
function mxPopupMenuHandler(graph,
factoryMethod)
Constructs an event handler that creates a mxPopupMenu.
Implements printing of a diagram across multiple pages.
function mxPrintPreview(graph,
scale,
pageFormat,
border,
x0,
y0,
borderColor,
title,
pageSelector)
Constructs a new print preview for the given parameters.
Extends mxGraphLayout to implement a radial tree algorithm.
function mxRadialTreeLayout(graph)
Constructs a new radial tree layout for the specified graph
Extends mxPoint to implement a 2-dimensional rectangle with double precision coordinates.
function mxRectangle(x,
y,
width,
height)
Constructs a new rectangle for the optional parameters.
Constructs a new rectangle for the optional parameters.
Extends mxShape to implement a rectangle shape.
function mxRectangleShape(bounds,
fill,
stroke,
strokewidth)
Constructs a new rectangle shape.
Optional global config variable to specify the extension of resource files.
Implements internationalization.
Extends mxShape to implement a rhombus (aka diamond) shape.
function mxRhombus(bounds,
fill,
stroke,
strokewidth)
Constructs a new rhombus shape.
Action to change the root in a model.
function mxRootChange(model,
root)
Constructs a change of the root in the specified model.
Codec for mxRootChanges.
Event handler that selects rectangular regions.
function mxRubberband(graph)
Constructs an event handler that selects rectangular regions in the graph using rubberband selection.
An event handler that manages cell handlers and invokes their mouse event processing functions.
Action to change the current root in a view.
Base class for all shapes.
function mxShape(stencil)
Constructs a new shape.
In charge of moving cells after a resize.
function mxSpaceManager(graph,
shiftRightwards,
shiftDownwards,
extendParents)
Constructs a new automatic layout for the given graph.
Extends mxGraphLayout to create a horizontal or vertical stack of the child vertices.
function mxStackLayout(graph,
horizontal,
spacing,
x0,
y0,
border)
Constructs a new stack layout layout for the specified graph, spacing, orientation and offset.
Implements a generic shape which is based on a XML node as a description.
function mxStencil(desc)
Constructs a new generic shape by setting desc to the given XML node and invoking parseDescription and parseConstraints.
A singleton class that provides a registry for stencils and the methods for painting those stencils onto a canvas or into a DOM.
Action to change a cell’s style in a model.
function mxStyleChange(model,
cell,
style)
Constructs a change of a style in the specified model.
Singleton class that acts as a global converter from string to object values in a style.
Defines the appearance of the cells in a graph.
function mxStylesheet()
Constructs a new stylesheet and assigns default styles.
Codec for mxStylesheets.
Extends mxAbstractCanvas2D to implement a canvas for SVG.
function mxSvgCanvas2D(root,
styleEnabled)
Constructs a new SVG canvas.
Extends mxShape to implement a swimlane shape.
function mxSwimlane(bounds,
fill,
stroke,
strokewidth)
Constructs a new swimlane shape.
A hierarchical layout algorithm.
function mxSwimlaneLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
Manager for swimlanes and nested swimlanes that sets the size of newly added swimlanes to that of their siblings, and propagates changes to the size of a swimlane to its siblings, if siblings is true, and its ancestors, if bubbling is true.
function mxSwimlaneManager(graph,
horizontal,
addEnabled,
resizeEnabled)
Constructs a new swimlane manager for the given graph.
Internal model of a hierarchical graph.
function mxSwimlaneModel(layout,
vertices,
roots,
parent,
tightenToSource)
Creates an internal ordered graph model using the vertices passed in.
An implementation of the first stage of the Sugiyama layout.
function mxSwimlaneOrdering(layout)
Creates a cycle remover for the given internal model.
Extends mxPoint to implement a 2-dimensional rectangle with double precision coordinates.
Action to change a terminal in a model.
function mxTerminalChange(model,
cell,
terminal,
source)
Constructs a change of a terminal in the specified model.
Codec for mxTerminalChanges.
Extends mxShape to implement a text shape.
function mxText(value,
bounds,
align,
valign,
color,
family,
size,
fontStyle,
spacing,
spacingTop,
spacingRight,
spacingBottom,
spacingLeft,
horizontal,
background,
border,
wrap,
clipped,
overflow,
labelPadding)
Constructs a new text shape.
Creates a toolbar inside a given DOM node.
function mxToolbar(container)
Constructs a toolbar in the specified container.
Graph event handler that displays tooltips.
function mxTooltipHandler(graph,
delay)
Constructs an event handler that displays tooltips with the specified delay (in milliseconds).
mxCell.prototype.mxTransient
List of members that should not be cloned inside clone.
Implementation of the triangle shape.
function mxTriangle()
Constructs a new triangle shape.
Implements a composite undoable edit.
function mxUndoableEdit(source,
significant)
Constructs a new undoable edit for the given source.
Implements a command history.
function mxUndoManager(size)
Constructs a new undo manager with the given history size.
Converts relative and absolute URLs to absolute URLs with protocol and domain.
A singleton class that provides cross-browser helper methods.
Action to change a user object in a model.
function mxValueChange(model,
cell,
value)
Constructs a change of a user object in the specified model.
Event handler for resizing cells.
Constructs an event handler that allows to resize vertices and groups.
Action to change a cell’s visible state in a model.
function mxVisibleChange(model,
cell,
visible)
Constructs a change of a visible state in the specified model.
Implements a canvas to be used for rendering VML.
Basic window inside a document.
function mxWindow(title,
content,
x,
y,
width,
height,
minimizable,
movable,
replaceNode,
style)
Constructs a new window with the given dimension and title to display the specified content.
Base class for all canvases.
function mxXmlCanvas2D(root)
Constructs a new abstract canvas.
XML HTTP request wrapper.
function mxXmlRequest(url,
params,
method,
async,
username,
password)
Constructs an XML HTTP request.
+
mxGraphModel.prototype.maintainEdgeParent
Specifies if edges should automatically be moved into the nearest common ancestor of their terminals.
mxCompactTreeLayout.prototype.maintainParentLocation
Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout.
mxCompactTreeLayout.prototype.maintainParentLocation
Specifies if the parent location should be maintained, so that the top, left corner stays the same before and after execution of the layout.
mxEditor.prototype.maintainSwimlanes
Specifies if the swimlanes should be kept at the same width or height depending on the setting of horizontalFlow.
makeDraggable: function(element,
graphF,
funct,
dragElement,
dx,
dy,
autoscroll,
scalePreview,
highlightDropTargets,
getDropTarget)
Configures the given DOM element to act as a drag source for the specified graph.
mxEdgeHandler.prototype.manageLabelHandle
Specifies if the label handle should be moved if it intersects with another handle.
mxVertexHandler.prototype.manageSizers
Specifies if sizers should be hidden and spaced if the vertex is small.
Stores the (key, value) pairs in this dictionary.
mxObjectCodec.prototype.mapping
Maps from from fieldnames to XML attribute names.
mxStackLayout.prototype.marginBottom
Top margin for the child area.
mxStackLayout.prototype.marginLeft
Top margin for the child area.
mxStackLayout.prototype.marginRight
Top margin for the child area.
mxStackLayout.prototype.marginTop
Top margin for the child area.
Marks the markedState and fires a mark event.
mxCellMarker.prototype.mark = function()
Marks the markedState and fires a mark event.
Fires after a cell has been marked or unmarked.
Specifies the event name for mark.
mxCellMarker.prototype.markCell = function(cell,
color)
Marks the given cell using the given color, or validColor if no color is specified.
mxCellMarker.prototype.markedState
Holds the marked mxCellState.
mxConnectionHandler.prototype.marker
Holds the mxTerminalMarker used for finding source and target cells.
mxEdgeHandler.prototype.marker
Holds the mxTerminalMarker which is used for highlighting terminals.
Maps from markers names to functions to paint the markers.
mxSvgCanvas2D.prototype.matchHtmlAlignment
Specifies if plain text output should match the vertical HTML alignment.
mxMultiplicity.prototype.max
Defines the maximum number of connections for which this rule applies.
Defines the maximum size in pixels of the portion of the cell which is to be used as a connectable region.
mxGraphHandler.prototype.maxCells
Defines the maximum number of cells to paint subhandles for.
mxSwimlaneModel.prototype.maxChainDfs = function(parent,
root,
connectingEdge,
seen,
chainCount)
Performs a depth first search on the internal hierarchy model.
mxGraph.prototype.maxFitScale
Specifies the maximum scale to be applied in fit.
mxSelectionCellsHandler.prototype.maxHandlers
Defines the maximum number of handlers to paint individually.
mxCylinder.prototype.maxHeight
Defines the maximum height of the top and bottom part of the cylinder shape.
Specifies the event name for maximize.
Fires after the window is maximized.
mxWindow.prototype.maximizeImage
URL of the image to be used for the maximize icon in the titlebar.
mxGraph.prototype.maximumContainerSize
mxRectangle that specifies the maximum size of the container if resizeContainer is true.
mxGraph.prototype.maximumGraphBounds
mxRectangle that specifies the area in which all cells in the diagram should be placed.
mxCoordinateAssignment.prototype.maxIterations
The number of heuristic iterations to run.
mxFastOrganicLayout.prototype.maxIterations
Total number of iterations to run the layout though.
mxMedianHybridCrossingReduction.prototype.maxIterations
The maximum number of iterations to perform whilst reducing edge crossings.
mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations
The total number of crossings found in the best configuration so far
mxGraphAbstractHierarchyCell.prototype.maxRank
The maximum rank this cell occupies.
mxGraphHierarchyModel.prototype.maxRank
Stores the largest rank number allocated
mxSwimlaneModel.prototype.maxRank
Stores the largest rank number allocated
mxCompactTreeLayout.prototype.maxRankHeight
An array of the maximum height of cells (relative to the layout direction) per rank
mxPanningHandler.prototype.maxScale
Specifies the maximum scale.
A utility class used to track cells whilst sorting occurs on the median values.
function MedianCellSorter()
Constructs a new median cell sorter.
mxCoordinateAssignment.prototype.medianPos = function(i,
model)
Performs one median positioning sweep in one direction
mxMedianHybridCrossingReduction.prototype.medianRank = function(rankValue,
downwardSweep)
Attempts to minimise the median placement of connected cells on this rank and one of the adjacent ranks
MedianCellSorter.prototype.medianValue
The weighted value of the cell stored.
mxMedianHybridCrossingReduction.prototype.medianValue = function(
   connectedCells,
   rankValue
)
Calculates the median rank order positioning for the specified cell using the connected cells on the specified rank.
mxCoordinateAssignment.prototype.medianXValue = function(connectedCells,
rankValue)
Calculates the median position of the connected cell on the specified rank
mxCompactTreeLayout.prototype.merge = function(p1,
p2)
mxGraphModel.prototype.mergeChildren = function(from,
to,
cloneAllEdges)
Merges the children of the given cell into the given target cell inside this model.
mxEdgeHandler.prototype.mergeRemoveEnabled
Specifies if removing bends by dropping them on other bends is enabled.
mxXmlRequest.prototype.method
Specifies the request method.
mxMultiplicity.prototype.min
Defines the minimum number of connections for which this rule applies.
Defines the minimum size in pixels of the portion of the cell which is to be used as a connectable region.
mxFastOrganicLayout.prototype.minDistanceLimit
Minimal distance limit.
mxFastOrganicLayout.prototype.minDistanceLimitSquared
Cached version of minDistanceLimit squared.
mxCompactTreeLayout.prototype.minEdgeJetty
The minimum distance for an edge jetty from a vertex.
mxCoordinateAssignment.prototype.minEdgeJetty
The minimum distance for an edge jetty from a vertex
mxGraph.prototype.minFitScale
Specifies the minimum scale to be applied in fit.
Specifies the event name for minimize.
Fires after the window is minimized.
mxWindow.prototype.minimizeImage
URL of the image to be used for the minimize icon in the titlebar.
mxGraph.prototype.minimumContainerSize
mxRectangle that specifies the minimum size of the container if resizeContainer is true.
mxGraph.prototype.minimumGraphSize
mxRectangle that specifies the minimum size of the graph.
mxGraphHandler.prototype.minimumSize
Specifies the minimum number of pixels for the width and height of a selection border.
mxWindow.prototype.minimumSize
mxRectangle that specifies the minimum width and height of the window.
mxCoordinateAssignment.prototype.minNode = function(model)
Performs one median positioning sweep in both directions
mxGraph.prototype.minPageBreakDist
Specifies the minimum distance for page breaks to be visible.
mxCoordinateAssignment.prototype.minPath = function(graph,
model)
Straightens out chains of virtual nodes where possibleacade to those stored after this layout processing step has completed.
mxGraphAbstractHierarchyCell.prototype.minRank
The minimum rank this cell occupies.
mxCellEditor.prototype.minResize
Defines the minimum width and height to be used in resize.
mxPanningHandler.prototype.minScale
Specifies the minimum scale.
Allow optimization by replacing VML with HTML.
mod: function(n,
m)
Returns the remainder of division of n by m.
mxGraph.prototype.model
Holds the mxGraphModel that contains the cells to be displayed.
mxHierarchicalLayout.prototype.model
The internal mxGraphHierarchyModel formed of the layout.
mxSwimlaneLayout.prototype.model
The internal mxSwimlaneModel formed of the layout.
mxCellEditor.prototype.modified
Specifies if the label has been modified.
mxEditor.prototype.modified
True if the graph has been modified since it was last saved.
Specifies the event name for mouseDown.
Specifies the event name for mouseMove.
Specifies the event name for mouseUp.
mxCellTracker.prototype.mouseDown = function(sender,
me)
Ignores the event.
mxConnectionHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a new connection.
mxDragSource.prototype.mouseDown = function(evt)
Returns the drop target for the given graph and coordinates.
mxEdgeHandler.prototype.mouseDown = function(sender,
me)
Handles the event by checking if a special element of the handler was clicked, in which case the index parameter is non-null.
mxGraphHandler.prototype.mouseDown = function(sender,
me)
Handles the event by selecing the given cell and creating a handle for it.
mxOutline.prototype.mouseDown = function(sender,
me)
Handles the event by starting a translation or zoom.
mxPanningHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating the panning.
mxPopupMenuHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating the panning.
mxRubberband.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a rubberband selection.
mxSelectionCellsHandler.prototype.mouseDown = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseDown = function(sender,
me)
Handles the event by initiating a rubberband selection.
mxVertexHandler.prototype.mouseDown = function(sender,
me)
Handles the event if a handle has been clicked.
mxConnectionHandler.prototype.mouseDownCounter
Counts the number of mouseDown events since the start.
mxGraph.prototype.mouseListeners
Holds the mouse event listeners.
mxCellTracker.prototype.mouseMove = function(sender,
me)
Handles the event by highlighting the cell under the mousepointer if it is over the hotspot region of the cell.
mxConnectionHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview edge or by highlighting a possible source or target terminal.
mxDragSource.prototype.mouseMove = function(evt)
Gets the graph for the given event using getGraphForEvent, updates the currentGraph, calling dragEnter and dragExit on the new and old graph, respectively, and invokes dragOver if currentGraph is not null.
mxEdgeHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview.
mxGraphHandler.prototype.mouseMove = function(sender,
me)
Handles the event by highlighting possible drop targets and updating the preview.
mxOutline.prototype.mouseMove = function(sender,
me)
Handles the event by previewing the viewrect in graph and updating the rectangle that represents the viewrect in the outline.
mxPanningHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the panning on the graph.
mxPopupMenuHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the panning on the graph.
mxRubberband.prototype.mouseMove = function(sender,
me)
Handles the event by updating therubberband selection.
mxSelectionCellsHandler.prototype.mouseMove = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the rubberband selection.
mxVertexHandler.prototype.mouseMove = function(sender,
me)
Handles the event by updating the preview.
mxCellTracker.prototype.mouseUp = function(sender,
me)
Handles the event by reseting the highlight.
mxConnectionHandler.prototype.mouseUp = function(sender,
me)
Handles the event by inserting the new connection.
mxDragSource.prototype.mouseUp = function(evt)
Processes the mouse up event and invokes drop, dragExit and stopDrag as required.
mxEdgeHandler.prototype.mouseUp = function(sender,
me)
Handles the event to applying the previewed changes on the edge by using moveLabel, connect or changePoints.
mxGraphHandler.prototype.mouseUp = function(sender,
me)
Handles the event by applying the changes to the selection cells.
mxOutline.prototype.mouseUp = function(sender,
me)
Handles the event by applying the translation or zoom to graph.
mxPanningHandler.prototype.mouseUp = function(sender,
me)
Handles the event by setting the translation on the view or showing the popupmenu.
mxPopupMenuHandler.prototype.mouseUp = function(sender,
me)
Handles the event by setting the translation on the view or showing the popupmenu.
mxRubberband.prototype.mouseUp = function(sender,
me)
Handles the event by selecting the region of the rubberband using mxGraph.selectRegion.
mxSelectionCellsHandler.prototype.mouseUp = function(sender,
me)
Redirects the given event to the handlers.
mxTooltipHandler.prototype.mouseUp = function(sender,
me)
Handles the event by resetting the tooltip timer or hiding the existing tooltip.
mxVertexHandler.prototype.mouseUp = function(sender,
me)
Handles the event by applying the changes to the geometry.
mxGuide.prototype.move = function(bounds,
delta,
gridEnabled)
Moves the bounds by the given mxPoint and returnt the snapped point.
Specifies the event name for move.
Fires while the window is being moved.
Specifies the event name for moveCells.
Fires between begin- and endUpdate in moveCells.
Specifies the event name for moveEnd.
Fires after the window is moved.
Specifies the event name for moveStart.
Fires before the window is moved.
mxCompositeLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell by calling move on master or the first layout in layouts.
mxGraphLayout.prototype.moveCell = function(cell,
x,
y)
Notified when a cell is being moved in a parent that has automatic layout to update the cell state (eg.
mxPartitionLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell.
mxStackLayout.prototype.moveCell = function(cell,
x,
y)
Implements mxGraphLayout.moveCell.
mxGraph.prototype.moveCells = function(cells,
dx,
dy,
clone,
target,
evt)
Moves or clones the specified cells and moves the cells or clones by the given amount, adding them to the optional target cell.
mxGraphHandler.prototype.moveCells = function(cells,
dx,
dy,
clone,
target,
evt)
Moves the given cells by the specified amount.
mxVertexHandler.prototype.moveChildren = function(cell,
dx,
dy)
Moves the children of the given cell by the given vector.
mxCircleLayout.prototype.moveCircle
Boolean specifying if the circle should be moved to the top, left corner specified by x0 and y0.
mxGraphHandler.prototype.moveEnabled
Specifies if moving is enabled.
mxLayoutManager.prototype.moveHandler
Holds the function that handles the move event.
Holds the function that handles the move event.
mxConnectionHandler.prototype.moveIconBack
Specifies if icons should be moved to the back of the overlay pane.
mxConnectionHandler.prototype.moveIconFront
Specifies if icons should be displayed inside the graph container instead of the overlay pane.
mxEdgeHandler.prototype.moveLabel = function(edgeState,
x,
y)
Changes the coordinates for the label of the given edge.
mxCompactTreeLayout.prototype.moveNode = function(node,
dx,
dy)
Moves the specified node and all of its children by the given amount.
mxAbstractCanvas2D.prototype.moveOp
Contains the string used for moving in paths.
mxVmlCanvas2D.prototype.moveOp
Contains the string used for moving in paths.
mxHierarchicalLayout.prototype.moveParent
Specifies if the parent should be moved if resizeParent is enabled.
mxSwimlaneLayout.prototype.moveParent
Specifies if the parent should be moved if resizeParent is enabled.
mxConnectionHandler.prototype.movePreviewAway
Switch to enable moving the preview away from the mousepointer.
mxEditor.prototype.movePropertiesDialog
Specifies if the properties dialog should be automatically moved near the cell it is displayed for, otherwise the dialog is not moved.
mxCellStatePreview.prototype.moveState = function(state,
dx,
dy,
add,
includeEdges)
mxAbstractCanvas2D.prototype.moveTo = function(x,
y)
Moves the current path the given coordinates.
mxXmlCanvas2D.prototype.moveTo = function(x,
y)
Moves the current path the given point.
mxCompactTreeLayout.prototype.moveTree
Specifies if the tree should be moved to the top, left corner if it is inside a top-level layer.
mxGraph.prototype.multigraph
Specifies if multiple edges in the same direction between the same pair of vertices are allowed.
mxGraph.prototype.multiplicities
An array of mxMultiplicities describing the allowed connections in a graph.
Base class for all canvases.
function mxAbstractCanvas2D()
Constructs a new abstract canvas.
Extends mxShape to implement an actor shape.
function mxActor(bounds,
fill,
stroke,
strokewidth)
Constructs a new actor shape.
Implements a basic animation in JavaScript.
function mxAnimation(delay)
Constructs an animation.
Extends mxShape to implement an arrow shape.
function mxArrow(points,
fill,
stroke,
strokewidth,
arrowWidth,
spacing,
endSize)
Constructs a new arrow shape.
Manager for automatically saving diagrams.
function mxAutoSaveManager(graph)
Constructs a new automatic layout for the given graph.
Cells are the elements of the graph model.
function mxCell(value,
geometry,
style)
Constructs a new cell to be used in a graph model.
Action to change the attribute of a cell’s user object.
function mxCellAttributeChange(cell,
attribute,
value)
Constructs a change of a attribute of the DOM node stored as the value of the given mxCell.
Codec for mxCells.
In-place editor for the graph.
function mxCellEditor(graph)
Constructs a new in-place editor for the specified graph.
A helper class to highlight cells.
function mxCellHighlight(graph,
highlightColor,
strokeWidth,
dashed)
Constructs a cell highlight.
A helper class to process mouse locations and highlight cells.
function mxCellMarker(graph,
validColor,
invalidColor,
hotspot)
Constructs a new cell marker.
Extends mxEventSource to implement a graph overlay, represented by an icon and a tooltip.
function mxCellOverlay(image,
tooltip,
align,
verticalAlign,
offset,
cursor)
Constructs a new overlay using the given image and tooltip.
Implements a mechanism for temporary cell Ids.
Renders cells into a document object model.
function mxCellRenderer()
arrow, rectangle, ellipse, rhombus, image, line, label, cylinder, swimlane, connector, actor and cloud.
Represents the current state of a cell in a given mxGraphView.
function mxCellState(view,
cell,
style)
Constructs a new object that represents the current state of the given cell in the specified view.
Implements a live preview for moving cells.
function mxCellStatePreview(graph)
Constructs a move preview for the given graph.
Event handler that highlights cells.
function mxCellTracker(graph,
color,
funct)
Constructs an event handler that highlights cells.
Action to add or remove a child in a model.
function mxChildChange(model,
parent,
child,
index)
Constructs a change of a child in the specified model.
Codec for mxChildChanges.
Extends mxGraphLayout to implement a circluar layout for a given radius.
function mxCircleLayout(graph,
radius)
Constructs a new circular layout for the specified radius.
Bootstrapping mechanism for the mxGraph thin client.
Singleton that implements a clipboard for graph cells.
Extends mxActor to implement a cloud shape.
function mxCloud(bounds,
fill,
stroke,
strokewidth)
Constructs a new cloud shape.
XML codec for JavaScript object graphs.
function mxCodec(document)
Constructs an XML encoder/decoder for the specified owner document.
Singleton class that acts as a global registry for codecs.
Action to change a cell’s collapsed state in a model.
function mxCollapseChange(model,
cell,
collapsed)
Constructs a change of a collapsed state in the specified model.
Extends mxGraphLayout to implement a compact tree (Moen) algorithm.
function mxCompactTreeLayout(graph,
horizontal,
invert)
Constructs a new compact tree layout for the specified graph and orientation.
Constructs a new fast organic layout for the specified graph.
Constructs a new fast organic layout for the specified graph.
Allows to compose multiple layouts into a single layout.
function mxCompositeLayout(graph,
layouts,
master)
Constructs a new layout using the given layouts.
Defines an object that contains the constraints about how to connect one side of an edge to its terminal.
function mxConnectionConstraint(point,
perimeter)
Constructs a new connection constraint for the given point and boolean arguments.
Graph event handler that creates new connections.
function mxConnectionHandler(graph,
factoryMethod)
Constructs an event handler that connects vertices using the specified factory method to create the new edges.
Extends mxShape to implement a connector shape.
function mxConnector(points,
stroke,
strokewidth)
Constructs a new connector shape.
Defines various global constants.
Handles constraints on connection targets.
function mxConstraintHandler(graph)
Constructs an new constraint handler.
Sets the horizontal locations of node and edge dummy nodes on each layer.
function mxCoordinateAssignment(layout,
intraCellSpacing,
interRankCellSpacing,
orientation,
initialX,
parallelEdgeSpacing)
Creates a coordinate assignment.
Action to change the current root in a view.
function mxCurrentRootChange(view,
root)
Constructs a change of the current root in the given view.
Constructs a change of the current root in the given view.
Extends mxShape to implement an cylinder shape.
function mxCylinder(bounds,
fill,
stroke,
strokewidth)
Constructs a new cylinder shape.
Binds keycodes to actionnames in an editor.
function mxDefaultKeyHandler(editor)
Constructs a new default key handler for the mxEditor.graph in the given mxEditor.
Custom codec for configuring mxDefaultKeyHandlers.
Creates popupmenus for mouse events.
function mxDefaultPopupMenu(config)
Constructs a new popupmenu-factory based on given configuration.
Custom codec for configuring mxDefaultPopupMenus.
Toolbar for the editor.
function mxDefaultToolbar(container,
editor)
Constructs a new toolbar for the given container and editor.
Custom codec for configuring mxDefaultToolbars.
A wrapper class for an associative array with object keys.
Maintains the size of a div element in Internet Explorer.
function mxDivResizer(div,
container)
Constructs an object that maintains the size of a div element when the window is being resized.
Extends mxShape to implement a double ellipse shape.
function mxDoubleEllipse(bounds,
fill,
stroke,
strokewidth)
Constructs a new ellipse shape.
Wrapper to create a drag source from a DOM element so that the element can be dragged over a graph and dropped into the graph as a new cell.
function mxDragSource(element,
dropHandler)
Constructs a new drag source for the given element.
Graph event handler that reconnects edges and modifies control points and the edge label location.
function mxEdgeHandler(state)
Constructs an edge handler for the specified mxCellState.
Constructs an edge handler for the specified mxCellState.
Extends mxGraphLayout to implement an edge label layout.
function mxEdgeLabelLayout(graph,
radius)
Constructs a new edge label layout.
Provides various edge styles to be used as the values for mxConstants.STYLE_EDGE in a cell style.
Extends mxEventSource to implement a application wrapper for a graph that adds actions, I/O using mxCodec, auto-layout using mxLayoutManager, command history using undoManager, and standard dialogs and widgets, eg.
function mxEditor(config)
Constructs a new editor.
Codec for mxEditors.
Provides animation effects.
Graph event handler that reconnects edges and modifies control points and the edge label location.
Extends mxShape to implement an ellipse shape.
function mxEllipse(bounds,
fill,
stroke,
strokewidth)
Constructs a new ellipse shape.
Cross-browser DOM event support.
The mxEventObject is a wrapper for all properties of a single event.
function mxEventObject(name)
Constructs a new event object with the specified name.
Base class for objects that dispatch named events.
Constructs a new dictionary which allows object to be used as keys.
function mxEventSource(eventSource)
Constructs a new event source.
Extends mxGraphLayout to implement a fast organic layout algorithm.
A simple class for creating HTML forms.
function mxForm(className)
Creates a HTML table using the specified classname.
Codec for mxValueChanges, mxStyleChanges, mxGeometryChanges, mxCollapseChanges and mxVisibleChanges.
var mxGenericChangeCodec = function(obj,
variable)
Factory function that creates a mxObjectCodec for the specified change and fieldname.
Extends mxRectangle to represent the geometry of a cell.
function mxGeometry(x,
y,
width,
height)
Constructs a new object to describe the size and location of a vertex or the control points of an edge.
Action to change a cell’s geometry in a model.
function mxGeometryChange(model,
cell,
geometry)
Constructs a change of a geometry in the specified model.
Extends mxEventSource to implement a graph component for the browser.
function mxGraph(container,
model,
renderHint,
stylesheet)
Constructs a new mxGraph in the specified container.
Set when the editor is started.
An abstraction of an internal hierarchy node or edge
function mxGraphAbstractHierarchyCell()
Constructs a new hierarchical layout algorithm.
Codec for mxGraphs.
Graph event handler that handles selection.
function mxGraphHandler(graph)
Constructs an event handler that creates handles for the selection cells.
An abstraction of a hierarchical edge for the hierarchy layout
function mxGraphHierarchyEdge(edges)
Constructs a hierarchy edge
Internal model of a hierarchical graph.
function mxGraphHierarchyModel(layout,
vertices,
roots,
parent,
tightenToSource)
Creates an internal ordered graph model using the vertices passed in.
An abstraction of a hierarchical edge for the hierarchy layout
function mxGraphHierarchyNode(cell)
Constructs an internal node to represent the specified real graph cell
Base class for all layout algorithms in mxGraph.
function mxGraphLayout(graph)
Constructs a new layout using the given layouts.
Extends mxEventSource to implement a graph model.
function mxGraphModel(root)
Constructs a new graph model.
Implements the selection model for a graph.
function mxGraphSelectionModel(graph)
Constructs a new graph selection model for the given mxGraph.
Extends mxEventSource to implement a view for a graph.
function mxGraphView(graph)
Constructs a new view for the given mxGraph.
Custom encoder for mxGraphViews.
Implements the alignment of selection cells to other cells in the graph.
function mxGuide(graph,
states)
Constructs a new guide object.
Implementation of the hexagon shape.
function mxHexagon()
Constructs a new hexagon shape.
A hierarchical layout algorithm.
function mxHierarchicalLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
The specific layout interface for hierarchical layouts.
function mxHierarchicalLayoutStage()
Constructs a new hierarchical layout stage.
Encapsulates the URL, width and height of an image.
function mxImage(src,
width,
height)
Constructs a new image.
Maps from keys to base64 encoded images or file locations.
Creates a new image export instance to be used with an export canvas.
function mxImageExport()
Constructs a new image export.
Extends mxShape to implement an image shape.
function mxImageShape(bounds,
image,
fill,
stroke,
strokewidth)
Constructs a new image shape.
Event handler that listens to keystroke events.
function mxKeyHandler(graph,
target)
Constructs an event handler that executes functions bound to specific keystrokes.
Extends mxShape to implement an image shape with a label.
function mxLabel(bounds,
fill,
stroke,
strokewidth)
Constructs a new label shape.
function mxLayoutManager(graph)
Constructs a new automatic layout for the given graph.
Extends mxShape to implement a horizontal line shape.
function mxLine(bounds,
stroke,
strokewidth)
Constructs a new line shape.
Optional global config variable to toggle loading of the two resource files in mxGraph and mxEditor.
Optional global config variable to toggle loading of the CSS files when the library is initialized.
A singleton class that implements a simple console.
A static class that implements all markers for VML and SVG using a registry.
Sets the horizontal locations of node and edge dummy nodes on each layer.
function mxMedianHybridCrossingReduction(layout)
Creates a coordinate assignment.
An implementation of the first stage of the Sugiyama layout.
function mxMinimumCycleRemover(layout)
Creates a cycle remover for the given internal model.
Codec for mxGraphModels.
Implements animation for morphing cells.
function mxMorphing(graph,
steps,
ease,
delay)
Constructs an animation.
Base class for all mouse events in mxGraph.
function mxMouseEvent(evt,
state)
Constructs a new event object for the given arguments.
Defines invalid connections along with the error messages that they produce.
function mxMultiplicity(source,
type,
attr,
value,
min,
max,
validNeighbors,
countError,
typeError,
validNeighborsAllowed)
Instantiate class mxMultiplicity in order to describe allowed connections in a graph.
Generic codec for JavaScript objects that implements a mapping between JavaScript objects and XML nodes that maps each field or element to an attribute or child node, and vice versa.
function mxObjectCodec(template,
exclude,
idrefs,
mapping)
Constructs a new codec for the specified template object.
Identity for JavaScript objects.
Implements an outline (aka overview) for a graph.
function mxOutline(source,
container)
Constructs a new outline for the specified graph inside the given container.
Event handler that pans and creates popupmenus.
Constructs an event handler that creates a mxPopupMenu and pans the graph.
Implements a handler for panning.
Extends mxGraphLayout for arranging parallel edges.
Extends mxGraphLayout for partitioning the parent cell vertically or horizontally by filling the complete area with the child cells.
function mxPartitionLayout(graph,
horizontal,
spacing,
border)
Constructs a new stack layout layout for the specified graph, spacing, orientation and offset.
Provides various perimeter functions to be used in a style as the value of mxConstants.STYLE_PERIMETER.
Implements a 2-dimensional vector with double precision coordinates.
function mxPoint(x,
y)
Constructs a new point for the optional x and y coordinates.
Extends mxShape to implement a polyline (a line with multiple points).
function mxPolyline(points,
stroke,
strokewidth)
Constructs a new polyline shape.
Basic popup menu.
Constructs a popupmenu.
Event handler that creates popupmenus.
function mxPopupMenuHandler(graph,
factoryMethod)
Constructs an event handler that creates a mxPopupMenu.
Implements printing of a diagram across multiple pages.
function mxPrintPreview(graph,
scale,
pageFormat,
border,
x0,
y0,
borderColor,
title,
pageSelector)
Constructs a new print preview for the given parameters.
Extends mxGraphLayout to implement a radial tree algorithm.
function mxRadialTreeLayout(graph)
Constructs a new radial tree layout for the specified graph
Extends mxPoint to implement a 2-dimensional rectangle with double precision coordinates.
function mxRectangle(x,
y,
width,
height)
Constructs a new rectangle for the optional parameters.
Constructs a new rectangle for the optional parameters.
Extends mxShape to implement a rectangle shape.
function mxRectangleShape(bounds,
fill,
stroke,
strokewidth)
Constructs a new rectangle shape.
Optional global config variable to specify the extension of resource files.
Implements internationalization.
Extends mxShape to implement a rhombus (aka diamond) shape.
function mxRhombus(bounds,
fill,
stroke,
strokewidth)
Constructs a new rhombus shape.
Action to change the root in a model.
function mxRootChange(model,
root)
Constructs a change of the root in the specified model.
Codec for mxRootChanges.
Event handler that selects rectangular regions.
function mxRubberband(graph)
Constructs an event handler that selects rectangular regions in the graph using rubberband selection.
An event handler that manages cell handlers and invokes their mouse event processing functions.
Action to change the current root in a view.
Base class for all shapes.
function mxShape(stencil)
Constructs a new shape.
In charge of moving cells after a resize.
function mxSpaceManager(graph,
shiftRightwards,
shiftDownwards,
extendParents)
Constructs a new automatic layout for the given graph.
Extends mxGraphLayout to create a horizontal or vertical stack of the child vertices.
function mxStackLayout(graph,
horizontal,
spacing,
x0,
y0,
border)
Constructs a new stack layout layout for the specified graph, spacing, orientation and offset.
Implements a generic shape which is based on a XML node as a description.
function mxStencil(desc)
Constructs a new generic shape by setting desc to the given XML node and invoking parseDescription and parseConstraints.
A singleton class that provides a registry for stencils and the methods for painting those stencils onto a canvas or into a DOM.
Action to change a cell’s style in a model.
function mxStyleChange(model,
cell,
style)
Constructs a change of a style in the specified model.
Singleton class that acts as a global converter from string to object values in a style.
Defines the appearance of the cells in a graph.
function mxStylesheet()
Constructs a new stylesheet and assigns default styles.
Codec for mxStylesheets.
Extends mxAbstractCanvas2D to implement a canvas for SVG.
function mxSvgCanvas2D(root,
styleEnabled)
Constructs a new SVG canvas.
Extends mxShape to implement a swimlane shape.
function mxSwimlane(bounds,
fill,
stroke,
strokewidth)
Constructs a new swimlane shape.
A hierarchical layout algorithm.
function mxSwimlaneLayout(graph,
orientation,
deterministic)
Constructs a new hierarchical layout algorithm.
Manager for swimlanes and nested swimlanes that sets the size of newly added swimlanes to that of their siblings, and propagates changes to the size of a swimlane to its siblings, if siblings is true, and its ancestors, if bubbling is true.
function mxSwimlaneManager(graph,
horizontal,
addEnabled,
resizeEnabled)
Constructs a new swimlane manager for the given graph.
Internal model of a hierarchical graph.
function mxSwimlaneModel(layout,
vertices,
roots,
parent,
tightenToSource)
Creates an internal ordered graph model using the vertices passed in.
An implementation of the first stage of the Sugiyama layout.
function mxSwimlaneOrdering(layout)
Creates a cycle remover for the given internal model.
Extends mxPoint to implement a 2-dimensional rectangle with double precision coordinates.
Action to change a terminal in a model.
function mxTerminalChange(model,
cell,
terminal,
source)
Constructs a change of a terminal in the specified model.
Codec for mxTerminalChanges.
Extends mxShape to implement a text shape.
function mxText(value,
bounds,
align,
valign,
color,
family,
size,
fontStyle,
spacing,
spacingTop,
spacingRight,
spacingBottom,
spacingLeft,
horizontal,
background,
border,
wrap,
clipped,
overflow,
labelPadding)
Constructs a new text shape.
Creates a toolbar inside a given DOM node.
function mxToolbar(container)
Constructs a toolbar in the specified container.
Graph event handler that displays tooltips.
function mxTooltipHandler(graph,
delay)
Constructs an event handler that displays tooltips with the specified delay (in milliseconds).
mxCell.prototype.mxTransient
List of members that should not be cloned inside clone.
Implementation of the triangle shape.
function mxTriangle()
Constructs a new triangle shape.
Implements a composite undoable edit.
function mxUndoableEdit(source,
significant)
Constructs a new undoable edit for the given source.
Implements a command history.
function mxUndoManager(size)
Constructs a new undo manager with the given history size.
Converts relative and absolute URLs to absolute URLs with protocol and domain.
A singleton class that provides cross-browser helper methods.
Action to change a user object in a model.
function mxValueChange(model,
cell,
value)
Constructs a change of a user object in the specified model.
Event handler for resizing cells.
Constructs an event handler that allows to resize vertices and groups.
Action to change a cell’s visible state in a model.
function mxVisibleChange(model,
cell,
visible)
Constructs a change of a visible state in the specified model.
Implements a canvas to be used for rendering VML.
Basic window inside a document.
function mxWindow(title,
content,
x,
y,
width,
height,
minimizable,
movable,
replaceNode,
style)
Constructs a new window with the given dimension and title to display the specified content.
Base class for all canvases.
function mxXmlCanvas2D(root)
Constructs a new abstract canvas.
XML HTTP request wrapper.
function mxXmlRequest(url,
params,
method,
async,
username,
password)
Constructs an XML HTTP request.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General12.html b/docs/js-api/index/General12.html index 7d3f23cc6..b1b8d64ff 100644 --- a/docs/js-api/index/General12.html +++ b/docs/js-api/index/General12.html @@ -11,13 +11,13 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
N
 name, mxEventObject
 nativeDoubleClickEnabled, mxGraph
 neighbours, mxFastOrganicLayout
 nestedBestRanks, mxMedianHybridCrossingReduction
 nextId, mxGraphModel
 nextLayerConnectedCache, mxCoordinateAssignment
 nextLayerConnectedCells, mxGraphAbstractHierarchyCell
 NO_FO, mxClient
 node
 nodeDistance
 NODETYPE_ATTRIBUTE, mxConstants
 NODETYPE_CDATA, mxConstants
 NODETYPE_COMMENT, mxConstants
 NODETYPE_DOCUMENT, mxConstants
 NODETYPE_DOCUMENT_FRAGMENT, mxConstants
 NODETYPE_DOCUMENTTYPE, mxConstants
 NODETYPE_ELEMENT, mxConstants
 NODETYPE_ENTITY, mxConstants
 NODETYPE_ENTITY_REFERENCE, mxConstants
 NODETYPE_NOTATION, mxConstants
 NODETYPE_PROCESSING_INSTRUCTION, mxConstants
 NODETYPE_TEXT, mxConstants
 NONE, mxConstants
 noReset, mxToolbar
 NORMALIZE
 normalizeImage, mxWindow
 normalKeys, mxKeyHandler
 notify, mxUndoableEdit
 NOTIFY
 NS_SVG, mxConstants
 NS_XHTML, mxConstants
 NS_XLINK, mxConstants
 nudge, WeightedCellSorter
O
 objects
 OFFICE_PREFIX, mxClient
 offset
 oldBounds, mxTemporaryCellStates
 oldScale, mxTemporaryCellStates
 oldStates, mxTemporaryCellStates
 onEncode, mxRootChangeCodec
 onInit
 open
 OPEN
 optimizeVmlReflows, mxGraphView
 Order, mxGraph
 ORDER_CELLS
 orderCells, mxGraph
 orientation
 origin, mxCellState
 OrthConnector, mxEdgeStyle
 outline
 OUTLINE_COLOR, mxConstants
 OUTLINE_HANDLE_FILLCOLOR, mxConstants
 OUTLINE_HANDLE_STROKECOLOR, mxConstants
 OUTLINE_HIGHLIGHT_COLOR, mxConstants
 OUTLINE_STROKEWIDTH, mxConstants
 outlineConnect
 outlineResource, mxEditor
 Overlays, mxGraph
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
N
 name, mxEventObject
 nativeDoubleClickEnabled, mxGraph
 neighbours, mxFastOrganicLayout
 nestedBestRanks, mxMedianHybridCrossingReduction
 nextId, mxGraphModel
 nextLayerConnectedCache, mxCoordinateAssignment
 nextLayerConnectedCells, mxGraphAbstractHierarchyCell
 NO_FO, mxClient
 node
 nodeDistance
 NODETYPE_ATTRIBUTE, mxConstants
 NODETYPE_CDATA, mxConstants
 NODETYPE_COMMENT, mxConstants
 NODETYPE_DOCUMENT, mxConstants
 NODETYPE_DOCUMENT_FRAGMENT, mxConstants
 NODETYPE_DOCUMENTTYPE, mxConstants
 NODETYPE_ELEMENT, mxConstants
 NODETYPE_ENTITY, mxConstants
 NODETYPE_ENTITY_REFERENCE, mxConstants
 NODETYPE_NOTATION, mxConstants
 NODETYPE_PROCESSING_INSTRUCTION, mxConstants
 NODETYPE_TEXT, mxConstants
 NONE, mxConstants
 noReset, mxToolbar
 NORMALIZE
 normalizeImage, mxWindow
 normalKeys, mxKeyHandler
 notify, mxUndoableEdit
 NOTIFY
 NS_SVG, mxConstants
 NS_XHTML, mxConstants
 NS_XLINK, mxConstants
 nudge, WeightedCellSorter
O
 objects
 OFFICE_PREFIX, mxClient
 offset
 oldBounds, mxTemporaryCellStates
 oldScale, mxTemporaryCellStates
 oldStates, mxTemporaryCellStates
 onEncode, mxRootChangeCodec
 onInit
 open
 OPEN
 optimizeVmlReflows, mxGraphView
 Order, mxGraph
 ORDER_CELLS
 orderCells, mxGraph
 orientation
 origin, mxCellState
 OrthConnector, mxEdgeStyle
 outline
 OUTLINE_COLOR, mxConstants
 OUTLINE_HANDLE_FILLCOLOR, mxConstants
 OUTLINE_HANDLE_STROKECOLOR, mxConstants
 OUTLINE_HIGHLIGHT_COLOR, mxConstants
 OUTLINE_STROKEWIDTH, mxConstants
 outlineConnect
 outlineResource, mxEditor
 Overlays, mxGraph
-
mxEventObject.prototype.name
Holds the name.
Specifies if native double click events should be deteced.
mxFastOrganicLayout.prototype.neighbours
Local copy of cell neighbours.
mxMedianHybridCrossingReduction.prototype.nestedBestRanks
Stores each rank as a collection of cells in the best order found for each layer so far
mxGraphModel.prototype.nextId
Specifies the next Id to be created.
mxCoordinateAssignment.prototype.nextLayerConnectedCache
A store of connections to the layer above for speed
mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells
A cached version of the cells this cell connects to on the next layer up
NO_FO: !document.createElementNS || document.createElementNS(
   'http://www.w3.org/2000/svg',
   'foreignObject'
) !
True if foreignObject support is not available.
mxCompactTreeLayout.prototype.node
The internal node representation of the root cell.
mxShape.prototype.node
Holds the outermost DOM node that represents this shape.
mxCompactTreeLayout.prototype.nodeDistance
Holds the nodeDistance.
mxRadialTreeLayout.prototype.nodeDistance
Holds the nodeDistance.
DOM node of type ATTRIBUTE.
DOM node of type CDATA.
DOM node of type COMMENT.
DOM node of type DOCUMENT.
DOM node of type DOCUMENT_FRAGMENT.
DOM node of type DOCUMENTTYPE.
DOM node of type ELEMENT.
DOM node of type ENTITY.
DOM node of type ENTITY_REFERENCE.
DOM node of type NOTATION.
DOM node of type PROCESSING_INSTRUCTION.
DOM node of type TEXT.
Defines the value for none.
mxToolbar.prototype.noReset
Specifies if resetMode requires a forced flag of true for resetting the current mode in the toolbar.
Specifies the event name for normalize.
Fires after the window is normalized, that is, it returned from maximized or minimized state.
mxWindow.prototype.normalizeImage
URL of the image to be used for the normalize icon in the titlebar.
mxKeyHandler.prototype.normalKeys
Maps from keycodes to functions for non-pressed control keys.
mxUndoableEdit.prototype.notify = function()
Hook to notify any listeners of the changes after an undo or redo has been carried out.
Specifies the event name for notify.
Same as mxEvent.CHANGE, this event can be used for classes that need to implement a sync mechanism between this model and, say, a remote model.
Defines the SVG namespace.
Defines the XHTML namespace.
Defines the XLink namespace.
WeightedCellSorter.prototype.nudge
Whether or not to flip equal weight values.
+
mxEventObject.prototype.name
Holds the name.
Specifies if native double click events should be deteced.
mxFastOrganicLayout.prototype.neighbours
Local copy of cell neighbours.
mxMedianHybridCrossingReduction.prototype.nestedBestRanks
Stores each rank as a collection of cells in the best order found for each layer so far
mxGraphModel.prototype.nextId
Specifies the next Id to be created.
mxCoordinateAssignment.prototype.nextLayerConnectedCache
A store of connections to the layer above for speed
mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells
A cached version of the cells this cell connects to on the next layer up
NO_FO: !document.createElementNS || document.createElementNS(
   'http://www.w3.org/2000/svg',
   'foreignObject'
) !
True if foreignObject support is not available.
mxCompactTreeLayout.prototype.node
The internal node representation of the root cell.
mxShape.prototype.node
Holds the outermost DOM node that represents this shape.
mxCompactTreeLayout.prototype.nodeDistance
Holds the nodeDistance.
mxRadialTreeLayout.prototype.nodeDistance
Holds the nodeDistance.
DOM node of type ATTRIBUTE.
DOM node of type CDATA.
DOM node of type COMMENT.
DOM node of type DOCUMENT.
DOM node of type DOCUMENT_FRAGMENT.
DOM node of type DOCUMENTTYPE.
DOM node of type ELEMENT.
DOM node of type ENTITY.
DOM node of type ENTITY_REFERENCE.
DOM node of type NOTATION.
DOM node of type PROCESSING_INSTRUCTION.
DOM node of type TEXT.
Defines the value for none.
mxToolbar.prototype.noReset
Specifies if resetMode requires a forced flag of true for resetting the current mode in the toolbar.
Specifies the event name for normalize.
Fires after the window is normalized, that is, it returned from maximized or minimized state.
mxWindow.prototype.normalizeImage
URL of the image to be used for the normalize icon in the titlebar.
mxKeyHandler.prototype.normalKeys
Maps from keycodes to functions for non-pressed control keys.
mxUndoableEdit.prototype.notify = function()
Hook to notify any listeners of the changes after an undo or redo has been carried out.
Specifies the event name for notify.
Same as mxEvent.CHANGE, this event can be used for classes that need to implement a sync mechanism between this model and, say, a remote model.
Defines the SVG namespace.
Defines the XHTML namespace.
Defines the XLink namespace.
WeightedCellSorter.prototype.nudge
Whether or not to flip equal weight values.
-
mxCodec.prototype.objects
Maps from IDs to objects.
Contains all objects where any listener was added using addListener.
Prefix for VML office namespace in node names.
mxCellOverlay.prototype.offset
Holds the offset as an mxPoint.
mxCompactTreeLayout.prototype.offset = function(p1,
p2,
a1,
a2,
b1,
b2)
mxGeometry.prototype.offset
For edges, this holds the offset (in pixels) from the position defined by x and y on the edge.
mxTemporaryCellStates.prototype.oldBounds
Holds the height of the rectangle.
mxTemporaryCellStates.prototype.oldScale
Holds the height of the rectangle.
mxTemporaryCellStates.prototype.oldStates
Holds the height of the rectangle.
Encodes the child recursively.
Called from within the constructor.
Called from within the constructor.
mxEditor.prototype.open = function (filename)
Opens the specified file synchronously and parses it using readGraphModel.
mxPrintPreview.prototype.open = function(css)
Shows the print preview window.
Fires after a file was opened in open.
Specifies the event name for open.
mxGraphView.prototype.optimizeVmlReflows
Specifies if the canvas should be hidden while rendering in IE8 standards mode and quirks mode.
Specifies the event name for orderCells.
Fires between begin- and endUpdate in orderCells.
mxGraph.prototype.orderCells = function(back,
cells)
Moves the given cells to the front or back.
mxCoordinateAssignment.prototype.orientation
The position of the root ( start ) node(s) relative to the rest of the laid out graph.
mxHierarchicalLayout.prototype.orientation
The position of the root node(s) relative to the laid out graph in.
mxSwimlaneLayout.prototype.orientation
The position of the root node(s) relative to the laid out graph in.
mxCellState.prototype.origin
mxPoint that holds the origin for all child cells.
OrthConnector: function(state,
source,
target,
points,
result)
Implements a local orthogonal router between the given cells.
mxEditor.prototype.outline
Reference to the mxWindow that contains the outline.
Reference to the mxGraph that renders the outline.
mxShape.prototype.outline
Specifies if the shape should be drawn as an outline.
Defines the color to be used for the outline rectangle border.
Defines the color to be used for the outline sizer fill color.
Defines the color to be used for the outline sizer stroke color.
Specifies the default highlight color for shape outlines.
Defines the strokewidth to be used for the outline rectangle stroke width.
mxConnectionHandler.prototype.outlineConnect
Specifies if connections to the outline of a highlighted target should be enabled.
mxEdgeHandler.prototype.outlineConnect
Specifies if connections to the outline of a highlighted target should be enabled.
mxEditor.prototype.outlineResource
Specifies the resource key for the outline window title.
+
mxCodec.prototype.objects
Maps from IDs to objects.
Contains all objects where any listener was added using addListener.
Prefix for VML office namespace in node names.
mxCellOverlay.prototype.offset
Holds the offset as an mxPoint.
mxCompactTreeLayout.prototype.offset = function(p1,
p2,
a1,
a2,
b1,
b2)
mxGeometry.prototype.offset
For edges, this holds the offset (in pixels) from the position defined by x and y on the edge.
mxTemporaryCellStates.prototype.oldBounds
Holds the height of the rectangle.
mxTemporaryCellStates.prototype.oldScale
Holds the height of the rectangle.
mxTemporaryCellStates.prototype.oldStates
Holds the height of the rectangle.
Encodes the child recursively.
Called from within the constructor.
Called from within the constructor.
mxEditor.prototype.open = function (filename)
Opens the specified file synchronously and parses it using readGraphModel.
mxPrintPreview.prototype.open = function(css)
Shows the print preview window.
Fires after a file was opened in open.
Specifies the event name for open.
mxGraphView.prototype.optimizeVmlReflows
Specifies if the canvas should be hidden while rendering in IE8 standards mode and quirks mode.
Specifies the event name for orderCells.
Fires between begin- and endUpdate in orderCells.
mxGraph.prototype.orderCells = function(back,
cells)
Moves the given cells to the front or back.
mxCoordinateAssignment.prototype.orientation
The position of the root ( start ) node(s) relative to the rest of the laid out graph.
mxHierarchicalLayout.prototype.orientation
The position of the root node(s) relative to the laid out graph in.
mxSwimlaneLayout.prototype.orientation
The position of the root node(s) relative to the laid out graph in.
mxCellState.prototype.origin
mxPoint that holds the origin for all child cells.
OrthConnector: function(state,
source,
target,
points,
result)
Implements a local orthogonal router between the given cells.
mxEditor.prototype.outline
Reference to the mxWindow that contains the outline.
Reference to the mxGraph that renders the outline.
mxShape.prototype.outline
Specifies if the shape should be drawn as an outline.
Defines the color to be used for the outline rectangle border.
Defines the color to be used for the outline sizer fill color.
Defines the color to be used for the outline sizer stroke color.
Specifies the default highlight color for shape outlines.
Defines the strokewidth to be used for the outline rectangle stroke width.
mxConnectionHandler.prototype.outlineConnect
Specifies if connections to the outline of a highlighted target should be enabled.
mxEdgeHandler.prototype.outlineConnect
Specifies if connections to the outline of a highlighted target should be enabled.
mxEditor.prototype.outlineResource
Specifies the resource key for the outline window title.
@@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General13.html b/docs/js-api/index/General13.html index 0765b808c..14d3820b9 100644 --- a/docs/js-api/index/General13.html +++ b/docs/js-api/index/General13.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
P
 PAGE_FORMAT_A4_PORTRAIT, mxConstants
 PAGE_FORMAT_LETTER_PORTRAIT, mxConstants
 pageBreakColor, mxGraph
 pageBreakDashed, mxGraph
 pageBreaksVisible, mxGraph
 pageCount, mxPrintPreview
 pageFormat
 pageScale, mxGraph
 pageSelector, mxPrintPreview
 pageVisible, mxGraph
 paint
 paintBackground
 paintEdgeShape
 paintForeground
 paintGlassEffect, mxShape
 paintImage, mxLabel
 paintIndicator, mxLabel
 paintLine, mxPolyline
 paintRoundedSwimlane, mxSwimlane
 paintSwimlane, mxSwimlane
 paintVertexShape
 PAN
 PAN_END
 PAN_START
 panDx, mxGraph
 panDy, mxGraph
 panGraph
 panningEnabled, mxPanningHandler
 para, mxUtils
 parallelEdgeSpacing
 params, mxXmlRequest
 parent
 parentBorder
 parentForCellChanged, mxGraphModel
 parentHighlightEnabled
 parentsChanged, mxCompactTreeLayout
 parse, mxResources
 parseConstraint, mxStencil
 parseConstraints, mxStencil
 parseDescription, mxStencil
 parseXml, mxUtils
 password, mxXmlRequest
 paste, mxClipboard
 path
 PATH_SEPARATOR, mxCellPath
 perimeter, mxConnectionConstraint
 PERIMETER_ELLIPSE, mxConstants
 PERIMETER_HEXAGON, mxConstants
 PERIMETER_RECTANGLE, mxConstants
 PERIMETER_RHOMBUS, mxConstants
 PERIMETER_TRIANGLE, mxConstants
 pinchEnabled, mxPanningHandler
 placeLabels, mxEdgeLabelLayout
 placementStage
 plainText, mxVmlCanvas2D
 point, mxConnectionConstraint
 pointerEvents
 pointerEventsValue, mxSvgCanvas2D
 pointImage, mxConstraintHandler
 points
 popup
 popupHandler, mxEditor
 portsEnabled, mxGraph
 positionChanged, mxVertexHandler
 post, mxUtils
 POST
 postConfigureShape, mxCellRenderer
 postDiagram, mxEditor
 postfix, mxGraphModel
 postParameterName, mxEditor
 postProcessCellStyle, mxGraph
 preferHtml, mxEdgeHandler
 preferPageSize, mxGraph
 prefHozEdgeSep
 prefix, mxGraphModel
 prefVertEdgeOff
 preserveImageAspect, mxImageShape
 previewColor, mxGraphHandler
 previewElement, mxDragSource
 previewEnabled, mxPanningHandler
 previousLayerConnectedCache, mxCoordinateAssignment
 previousLayerConnectedCells, mxGraphAbstractHierarchyCell
 print, mxPrintPreview
 printBackgroundImage, mxPrintPreview
 printControls, mxPrintPreview
 printOverlays, mxPrintPreview
 printScreen, mxUtils
 process, mxCellMarker
 processChange, mxGraph
 processEvent, mxVertexHandler
 processInclude, mxObjectCodec
 processReversedEdge, mxCoordinateAssignment
 prompt, mxUtils
 properties, mxEventObject
 propertiesHeight, mxEditor
 propertiesResource, mxEditor
 propertiesWidth, mxEditor
 ptSeqDistSq, mxUtils
 put, mxDictionary
 putCellStyle, mxStylesheet
 putDefaultEdgeStyle, mxStylesheet
 putDefaultVertexStyle, mxStylesheet
 putImage, mxImageBundle
 putObject, mxCodec
 putValue, mxStyleRegistry
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
P
 PAGE_FORMAT_A4_PORTRAIT, mxConstants
 PAGE_FORMAT_LETTER_PORTRAIT, mxConstants
 pageBreakColor, mxGraph
 pageBreakDashed, mxGraph
 pageBreaksVisible, mxGraph
 pageCount, mxPrintPreview
 pageFormat
 pageScale, mxGraph
 pageSelector, mxPrintPreview
 pageVisible, mxGraph
 paint
 paintBackground
 paintEdgeShape
 paintForeground
 paintGlassEffect, mxShape
 paintImage, mxLabel
 paintIndicator, mxLabel
 paintLine, mxPolyline
 paintRoundedSwimlane, mxSwimlane
 paintSwimlane, mxSwimlane
 paintVertexShape
 PAN
 PAN_END
 PAN_START
 panDx, mxGraph
 panDy, mxGraph
 panGraph
 panningEnabled, mxPanningHandler
 para, mxUtils
 parallelEdgeSpacing
 params, mxXmlRequest
 parent
 parentBorder
 parentForCellChanged, mxGraphModel
 parentHighlightEnabled
 parentsChanged, mxCompactTreeLayout
 parse, mxResources
 parseConstraint, mxStencil
 parseConstraints, mxStencil
 parseDescription, mxStencil
 parseXml, mxUtils
 password, mxXmlRequest
 paste, mxClipboard
 path
 PATH_SEPARATOR, mxCellPath
 perimeter, mxConnectionConstraint
 PERIMETER_ELLIPSE, mxConstants
 PERIMETER_HEXAGON, mxConstants
 PERIMETER_RECTANGLE, mxConstants
 PERIMETER_RHOMBUS, mxConstants
 PERIMETER_TRIANGLE, mxConstants
 pinchEnabled, mxPanningHandler
 placeLabels, mxEdgeLabelLayout
 placementStage
 plainText, mxVmlCanvas2D
 point, mxConnectionConstraint
 pointerEvents
 pointerEventsValue, mxSvgCanvas2D
 pointImage, mxConstraintHandler
 points
 popup
 popupHandler, mxEditor
 portsEnabled, mxGraph
 positionChanged, mxVertexHandler
 post, mxUtils
 POST
 postConfigureShape, mxCellRenderer
 postDiagram, mxEditor
 postfix, mxGraphModel
 postParameterName, mxEditor
 postProcessCellStyle, mxGraph
 preferHtml, mxEdgeHandler
 preferPageSize, mxGraph
 prefHozEdgeSep
 prefix, mxGraphModel
 prefVertEdgeOff
 preserveImageAspect, mxImageShape
 previewColor, mxGraphHandler
 previewElement, mxDragSource
 previewEnabled, mxPanningHandler
 previousLayerConnectedCache, mxCoordinateAssignment
 previousLayerConnectedCells, mxGraphAbstractHierarchyCell
 print, mxPrintPreview
 printBackgroundImage, mxPrintPreview
 printControls, mxPrintPreview
 printOverlays, mxPrintPreview
 printScreen, mxUtils
 process, mxCellMarker
 processChange, mxGraph
 processEvent, mxVertexHandler
 processInclude, mxObjectCodec
 processReversedEdge, mxCoordinateAssignment
 prompt, mxUtils
 properties, mxEventObject
 propertiesHeight, mxEditor
 propertiesResource, mxEditor
 propertiesWidth, mxEditor
 ptSeqDistSq, mxUtils
 put, mxDictionary
 putCellStyle, mxStylesheet
 putDefaultEdgeStyle, mxStylesheet
 putDefaultVertexStyle, mxStylesheet
 putImage, mxImageBundle
 putObject, mxCodec
 putValue, mxStyleRegistry
-
Defines the rectangle for the A4 portrait page format.
Defines the rectangle for the Letter portrait page format.
mxGraph.prototype.pageBreakColor
Specifies the color for page breaks.
mxGraph.prototype.pageBreakDashed
Specifies the page breaks should be dashed.
mxGraph.prototype.pageBreaksVisible
Specifies if a dashed line should be drawn between multiple pages.
mxPrintPreview.prototype.pageCount
Holds the actual number of pages in the preview.
mxGraph.prototype.pageFormat
Specifies the page format for the background page.
mxPrintPreview.prototype.pageFormat
Holds the mxRectangle that defines the page format.
mxGraph.prototype.pageScale
Specifies the scale of the background page.
mxPrintPreview.prototype.pageSelector
Boolean that specifies if the page selector should be displayed.
mxGraph.prototype.pageVisible
Specifies if the background page should be visible.
mxShape.prototype.paint = function(c)
Generic rendering code.
mxText.prototype.paint = function(c)
Generic rendering code.
mxDoubleEllipse.prototype.paintBackground = function(c,
x,
y,
w,
h)
Paints the background.
mxRectangleShape.prototype.paintBackground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxShape.prototype.paintBackground = function(c,
x,
y,
w,
h)
Hook for subclassers.
mxArrow.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxConnector.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxPolyline.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxShape.prototype.paintEdgeShape = function(c,
pts)
Hook for subclassers.
mxDoubleEllipse.prototype.paintForeground = function(c,
x,
y,
w,
h)
Paints the foreground.
mxLabel.prototype.paintForeground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxRectangleShape.prototype.paintForeground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxShape.prototype.paintForeground = function(c,
x,
y,
w,
h)
Hook for subclassers.
mxShape.prototype.paintGlassEffect = function(c,
x,
y,
w,
h,
arc)
Paints the glass gradient effect.
mxLabel.prototype.paintImage = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxLabel.prototype.paintIndicator = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxPolyline.prototype.paintLine = function(c,
pts,
rounded)
Paints the line shape.
mxSwimlane.prototype.paintRoundedSwimlane = function(c,
x,
y,
w,
h,
start,
r,
fill,
swimlaneLine)
Paints the swimlane vertex shape.
mxSwimlane.prototype.paintSwimlane = function(c,
x,
y,
w,
h,
start,
fill,
swimlaneLine)
Paints the swimlane vertex shape.
mxActor.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxCylinder.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxEllipse.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Paints the ellipse shape.
mxImageShape.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxLine.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxRhombus.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Generic painting implementation.
mxShape.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Paints the vertex shape.
Paints the swimlane vertex shape.
Specifies the event name for pan.
Fires while handle is processing events.
Specifies the event name for panEnd.
Fires when the panning handler changes its active state to false.
Specifies the event name for panStart.
Fires when the panning handler changes its active state to true.
mxGraph.prototype.panDx
Current horizontal panning value.
mxGraph.prototype.panDy
Current vertical panning value.
mxGraph.prototype.panGraph = function(dx,
dy)
Shifts the graph display by the given amount.
mxPanningHandler.prototype.panGraph = function(dx,
dy)
Pans graph by the given amount.
mxPanningHandler.prototype.panningEnabled
Specifies if panning should be enabled.
para: function(parent,
text)
Appends a new paragraph with the given text to the specified parent and returns the paragraph.
mxCoordinateAssignment.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges.
mxHierarchicalLayout.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges
mxSwimlaneLayout.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges
mxXmlRequest.prototype.params
Holds the form encoded data for the POST request.
mxCell.prototype.parent
Reference to the parent cell.
mxGraphHierarchyModel.prototype.parent
The parent cell whose children are being laid out
mxGraphLayout.prototype.parent
The parent cell of the layout, if any
mxSwimlaneModel.prototype.parent
The parent cell whose children are being laid out
mxHierarchicalLayout.prototype.parentBorder
The border to be added around the children if the parent is to be resized using resizeParent.
mxSwimlaneLayout.prototype.parentBorder
The border to be added around the children if the parent is to be resized using resizeParent.
mxGraphModel.prototype.parentForCellChanged = function(cell,
parent,
index)
Inner callback to update the parent of a cell using mxCell.insert on the parent and return the previous parent.
mxEdgeHandler.prototype.parentHighlightEnabled
Specifies if the parent should be highlighted if a child cell is selected.
mxVertexHandler.prototype.parentHighlightEnabled
Specifies if the parent should be highlighted if a child cell is selected.
mxCompactTreeLayout.prototype.parentsChanged
A set of the parents that need updating based on children process as part of the layout.
parse: function(text)
Parses the key, value pairs in the specified text and stores them as local resources.
mxStencil.prototype.parseConstraint = function(node)
Parses the given XML node and returns its mxConnectionConstraint.
mxStencil.prototype.parseConstraints = function()
Reads the constraints from desc into constraints using parseConstraint.
mxStencil.prototype.parseDescription = function()
Reads w0, h0, aspect, bgNodes and fgNodes from desc.
parseXml: function()
Parses the specified XML string into a new XML document and returns the new document.
mxXmlRequest.prototype.password
Specifies the password to be used for authentication.
paste: function(graph)
Pastes the cells into the specified graph restoring the relation to parents, if possible.
mxAbstractCanvas2D.prototype.path
Holds the current path as an array.
Holds the current DOM node.
Holds the current DOM node.
Defines the separator between the path components.
mxConnectionConstraint.prototype.perimeter
Boolean that specifies if the point should be projected onto the perimeter of the terminal.
Name of the ellipse perimeter.
Name of the hexagon perimeter.
Name of the rectangle perimeter.
Name of the rhombus perimeter.
PERIMETER_TRIANGLE: 'trianglePerimeter' }
Name of the triangle perimeter.
mxPanningHandler.prototype.pinchEnabled
Specifies if pinch gestures should be handled as zoom.
mxEdgeLabelLayout.prototype.placeLabels = function(v,
e)
Places the labels of the given edges.
mxHierarchicalLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
mxSwimlaneLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
mxVmlCanvas2D.prototype.plainText = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the outline of the current path.
mxConnectionConstraint.prototype.point
mxPoint that specifies the fixed location of the connection point.
mxAbstractCanvas2D.prototype.pointerEvents
Boolean value that specifies if events should be handled.
mxShape.prototype.pointerEvents
Specifies if pointer events should be handled.
mxSvgCanvas2D.prototype.pointerEventsValue
Default value for active pointer events.
mxConstraintHandler.prototype.pointImage
mxImage to be used as the image for fixed connection points.
mxGeometry.prototype.points
Array of mxPoints which specifies the control points along the edge.
mxShape.prototype.points
Holds the array of mxPoints that specify the points of this shape.
mxPopupMenu.prototype.popup = function(x,
y,
cell,
evt)
Shows the popup menu for the given event and cell.
popup: function(content,
isInternalWindow)
Shows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.
mxEditor.prototype.popupHandler
Holds a mxDefaultPopupMenu for displaying popupmenus.
mxGraph.prototype.portsEnabled
Specifies if ports are enabled.
mxHandle.prototype.positionChanged = function()
Called after setPosition has been called in processEvent.
post: function(url,
params,
onload,
onerror)
Posts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.
Fires if a successful response was received in postDiagram.
Specifies the event name for post.
mxCellRenderer.prototype.postConfigureShape = function(state)
Replaces any reserved words used for attributes, eg.
mxEditor.prototype.postDiagram = function (url,
data)
Hook for subclassers to override the posting of a diagram represented by the given node to the given URL.
mxGraphModel.prototype.postfix
Defines the postfix of new Ids.
mxEditor.prototype.postParameterName
Specifies if the name of the post parameter that contains the diagram data in a post request to the server.
mxGraph.prototype.postProcessCellStyle = function(style)
Tries to resolve the value for the image style in the image bundles and turns short data URIs as defined in mxImageBundle to data URIs as defined in RFC 2397 of the IETF.
mxEdgeHandler.prototype.preferHtml
Specifies if bends should be added to the graph container.
mxGraph.prototype.preferPageSize
Specifies if the graph size should be rounded to the next page number in sizeDidChange.
mxCompactTreeLayout.prototype.prefHozEdgeSep
The preferred horizontal distance between edges exiting a vertex.
mxCoordinateAssignment.prototype.prefHozEdgeSep
The preferred horizontal distance between edges exiting a vertex
mxGraphModel.prototype.prefix
Defines the prefix of new Ids.
mxCompactTreeLayout.prototype.prefVertEdgeOff
The preferred vertical offset between edges exiting a vertex.
mxCoordinateAssignment.prototype.prefVertEdgeOff
The preferred vertical offset between edges exiting a vertex
mxImageShape.prototype.preserveImageAspect
Switch to preserve image aspect.
mxGraphHandler.prototype.previewColor
Specifies the color of the preview shape.
mxDragSource.prototype.previewElement
Optional mxRectangle that specifies the unscaled size of the preview.
mxPanningHandler.prototype.previewEnabled
Specifies if the panning should be previewed.
mxCoordinateAssignment.prototype.previousLayerConnectedCache
A store of connections to the layer below for speed
mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells
A cached version of the cells this cell connects to on the next layer down
mxPrintPreview.prototype.print = function(css)
Opens the print preview and shows the print dialog.
mxPrintPreview.prototype.printBackgroundImage
Specifies if the background image should be printed.
mxPrintPreview.prototype.printControls
Specifies if controls (such as folding icons) should be printed.
mxPrintPreview.prototype.printOverlays
Specifies if overlays should be printed.
printScreen: function(graph)
Prints the specified graph using a new window and the built-in print dialog.
mxCellMarker.prototype.process = function(me)
Processes the given event and cell and marks the state returned by getState with the color returned by getMarkerColor.
mxGraph.prototype.processChange = function(change)
Processes the given change and invalidates the respective cached data in view.
mxHandle.prototype.processEvent = function(me)
Processes the given mxMouseEvent and invokes setPosition.
mxObjectCodec.prototype.processInclude = function(dec,
node,
into)
Returns true if the given node is an include directive and executes the include by decoding the XML document.
mxCoordinateAssignment.prototype.processReversedEdge = function(graph,
model)
Hook to add additional processing
prompt: function(message,
defaultValue)
Displays the given message in a prompt dialog.
mxEventObject.prototype.properties
Holds the properties as an associative array.
mxEditor.prototype.propertiesHeight
Specifies the height of the properties window in pixels.
mxEditor.prototype.propertiesResource
Specifies the resource key for the properties window title.
mxEditor.prototype.propertiesWidth
Specifies the width of the properties window in pixels.
Returns the square distance between a segment and a point.
mxDictionary.prototype.put = function(key,
value)
Stores the value under the given key and returns the previous value for that key.
mxStylesheet.prototype.putCellStyle = function(name,
style)
Stores the given map of key, value pairs under the given name in styles.
mxStylesheet.prototype.putDefaultEdgeStyle = function(style)
Sets the default style for edges using defaultEdge as the stylename.
mxStylesheet.prototype.putDefaultVertexStyle = function(style)
Sets the default style for vertices using defaultVertex as the stylename.
mxImageBundle.prototype.putImage = function(key,
value,
fallback)
Adds the specified entry to the map.
mxCodec.prototype.putObject = function(id,
obj)
Assoiates the given object with the given ID and returns the given object.
putValue: function(name,
obj)
Puts the given object into the registry under the given name.
+
Defines the rectangle for the A4 portrait page format.
Defines the rectangle for the Letter portrait page format.
mxGraph.prototype.pageBreakColor
Specifies the color for page breaks.
mxGraph.prototype.pageBreakDashed
Specifies the page breaks should be dashed.
mxGraph.prototype.pageBreaksVisible
Specifies if a dashed line should be drawn between multiple pages.
mxPrintPreview.prototype.pageCount
Holds the actual number of pages in the preview.
mxGraph.prototype.pageFormat
Specifies the page format for the background page.
mxPrintPreview.prototype.pageFormat
Holds the mxRectangle that defines the page format.
mxGraph.prototype.pageScale
Specifies the scale of the background page.
mxPrintPreview.prototype.pageSelector
Boolean that specifies if the page selector should be displayed.
mxGraph.prototype.pageVisible
Specifies if the background page should be visible.
mxShape.prototype.paint = function(c)
Generic rendering code.
mxText.prototype.paint = function(c)
Generic rendering code.
mxDoubleEllipse.prototype.paintBackground = function(c,
x,
y,
w,
h)
Paints the background.
mxRectangleShape.prototype.paintBackground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxShape.prototype.paintBackground = function(c,
x,
y,
w,
h)
Hook for subclassers.
mxArrow.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxConnector.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxPolyline.prototype.paintEdgeShape = function(c,
pts)
Paints the line shape.
mxShape.prototype.paintEdgeShape = function(c,
pts)
Hook for subclassers.
mxDoubleEllipse.prototype.paintForeground = function(c,
x,
y,
w,
h)
Paints the foreground.
mxLabel.prototype.paintForeground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxRectangleShape.prototype.paintForeground = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxShape.prototype.paintForeground = function(c,
x,
y,
w,
h)
Hook for subclassers.
mxShape.prototype.paintGlassEffect = function(c,
x,
y,
w,
h,
arc)
Paints the glass gradient effect.
mxLabel.prototype.paintImage = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxLabel.prototype.paintIndicator = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxPolyline.prototype.paintLine = function(c,
pts,
rounded)
Paints the line shape.
mxSwimlane.prototype.paintRoundedSwimlane = function(c,
x,
y,
w,
h,
start,
r,
fill,
swimlaneLine)
Paints the swimlane vertex shape.
mxSwimlane.prototype.paintSwimlane = function(c,
x,
y,
w,
h,
start,
fill,
swimlaneLine)
Paints the swimlane vertex shape.
mxActor.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxCylinder.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxEllipse.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Paints the ellipse shape.
mxImageShape.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Generic background painting implementation.
mxLine.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Redirects to redrawPath for subclasses to work.
mxRhombus.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Generic painting implementation.
mxShape.prototype.paintVertexShape = function(c,
x,
y,
w,
h)
Paints the vertex shape.
Paints the swimlane vertex shape.
Specifies the event name for pan.
Fires while handle is processing events.
Specifies the event name for panEnd.
Fires when the panning handler changes its active state to false.
Specifies the event name for panStart.
Fires when the panning handler changes its active state to true.
mxGraph.prototype.panDx
Current horizontal panning value.
mxGraph.prototype.panDy
Current vertical panning value.
mxGraph.prototype.panGraph = function(dx,
dy)
Shifts the graph display by the given amount.
mxPanningHandler.prototype.panGraph = function(dx,
dy)
Pans graph by the given amount.
mxPanningHandler.prototype.panningEnabled
Specifies if panning should be enabled.
para: function(parent,
text)
Appends a new paragraph with the given text to the specified parent and returns the paragraph.
mxCoordinateAssignment.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges.
mxHierarchicalLayout.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges
mxSwimlaneLayout.prototype.parallelEdgeSpacing
The distance between each parallel edge on each ranks for long edges
mxXmlRequest.prototype.params
Holds the form encoded data for the POST request.
mxCell.prototype.parent
Reference to the parent cell.
mxGraphHierarchyModel.prototype.parent
The parent cell whose children are being laid out
mxGraphLayout.prototype.parent
The parent cell of the layout, if any
mxSwimlaneModel.prototype.parent
The parent cell whose children are being laid out
mxHierarchicalLayout.prototype.parentBorder
The border to be added around the children if the parent is to be resized using resizeParent.
mxSwimlaneLayout.prototype.parentBorder
The border to be added around the children if the parent is to be resized using resizeParent.
mxGraphModel.prototype.parentForCellChanged = function(cell,
parent,
index)
Inner callback to update the parent of a cell using mxCell.insert on the parent and return the previous parent.
mxEdgeHandler.prototype.parentHighlightEnabled
Specifies if the parent should be highlighted if a child cell is selected.
mxVertexHandler.prototype.parentHighlightEnabled
Specifies if the parent should be highlighted if a child cell is selected.
mxCompactTreeLayout.prototype.parentsChanged
A set of the parents that need updating based on children process as part of the layout.
parse: function(text)
Parses the key, value pairs in the specified text and stores them as local resources.
mxStencil.prototype.parseConstraint = function(node)
Parses the given XML node and returns its mxConnectionConstraint.
mxStencil.prototype.parseConstraints = function()
Reads the constraints from desc into constraints using parseConstraint.
mxStencil.prototype.parseDescription = function()
Reads w0, h0, aspect, bgNodes and fgNodes from desc.
parseXml: function()
Parses the specified XML string into a new XML document and returns the new document.
mxXmlRequest.prototype.password
Specifies the password to be used for authentication.
paste: function(graph)
Pastes the cells into the specified graph restoring the relation to parents, if possible.
mxAbstractCanvas2D.prototype.path
Holds the current path as an array.
Holds the current DOM node.
Holds the current DOM node.
Defines the separator between the path components.
mxConnectionConstraint.prototype.perimeter
Boolean that specifies if the point should be projected onto the perimeter of the terminal.
Name of the ellipse perimeter.
Name of the hexagon perimeter.
Name of the rectangle perimeter.
Name of the rhombus perimeter.
PERIMETER_TRIANGLE: 'trianglePerimeter' }
Name of the triangle perimeter.
mxPanningHandler.prototype.pinchEnabled
Specifies if pinch gestures should be handled as zoom.
mxEdgeLabelLayout.prototype.placeLabels = function(v,
e)
Places the labels of the given edges.
mxHierarchicalLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
mxSwimlaneLayout.prototype.placementStage = function(initialX,
parent)
Executes the placement stage using mxCoordinateAssignment.
mxVmlCanvas2D.prototype.plainText = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the outline of the current path.
mxConnectionConstraint.prototype.point
mxPoint that specifies the fixed location of the connection point.
mxAbstractCanvas2D.prototype.pointerEvents
Boolean value that specifies if events should be handled.
mxShape.prototype.pointerEvents
Specifies if pointer events should be handled.
mxSvgCanvas2D.prototype.pointerEventsValue
Default value for active pointer events.
mxConstraintHandler.prototype.pointImage
mxImage to be used as the image for fixed connection points.
mxGeometry.prototype.points
Array of mxPoints which specifies the control points along the edge.
mxShape.prototype.points
Holds the array of mxPoints that specify the points of this shape.
mxPopupMenu.prototype.popup = function(x,
y,
cell,
evt)
Shows the popup menu for the given event and cell.
popup: function(content,
isInternalWindow)
Shows the specified text content in a new mxWindow or a new browser window if isInternalWindow is false.
mxEditor.prototype.popupHandler
Holds a mxDefaultPopupMenu for displaying popupmenus.
mxGraph.prototype.portsEnabled
Specifies if ports are enabled.
mxHandle.prototype.positionChanged = function()
Called after setPosition has been called in processEvent.
post: function(url,
params,
onload,
onerror)
Posts the specified params to the given URL asynchronously and invokes the given functions depending on the request status.
Fires if a successful response was received in postDiagram.
Specifies the event name for post.
mxCellRenderer.prototype.postConfigureShape = function(state)
Replaces any reserved words used for attributes, eg.
mxEditor.prototype.postDiagram = function (url,
data)
Hook for subclassers to override the posting of a diagram represented by the given node to the given URL.
mxGraphModel.prototype.postfix
Defines the postfix of new Ids.
mxEditor.prototype.postParameterName
Specifies if the name of the post parameter that contains the diagram data in a post request to the server.
mxGraph.prototype.postProcessCellStyle = function(style)
Tries to resolve the value for the image style in the image bundles and turns short data URIs as defined in mxImageBundle to data URIs as defined in RFC 2397 of the IETF.
mxEdgeHandler.prototype.preferHtml
Specifies if bends should be added to the graph container.
mxGraph.prototype.preferPageSize
Specifies if the graph size should be rounded to the next page number in sizeDidChange.
mxCompactTreeLayout.prototype.prefHozEdgeSep
The preferred horizontal distance between edges exiting a vertex.
mxCoordinateAssignment.prototype.prefHozEdgeSep
The preferred horizontal distance between edges exiting a vertex
mxGraphModel.prototype.prefix
Defines the prefix of new Ids.
mxCompactTreeLayout.prototype.prefVertEdgeOff
The preferred vertical offset between edges exiting a vertex.
mxCoordinateAssignment.prototype.prefVertEdgeOff
The preferred vertical offset between edges exiting a vertex
mxImageShape.prototype.preserveImageAspect
Switch to preserve image aspect.
mxGraphHandler.prototype.previewColor
Specifies the color of the preview shape.
mxDragSource.prototype.previewElement
Optional mxRectangle that specifies the unscaled size of the preview.
mxPanningHandler.prototype.previewEnabled
Specifies if the panning should be previewed.
mxCoordinateAssignment.prototype.previousLayerConnectedCache
A store of connections to the layer below for speed
mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells
A cached version of the cells this cell connects to on the next layer down
mxPrintPreview.prototype.print = function(css)
Opens the print preview and shows the print dialog.
mxPrintPreview.prototype.printBackgroundImage
Specifies if the background image should be printed.
mxPrintPreview.prototype.printControls
Specifies if controls (such as folding icons) should be printed.
mxPrintPreview.prototype.printOverlays
Specifies if overlays should be printed.
printScreen: function(graph)
Prints the specified graph using a new window and the built-in print dialog.
mxCellMarker.prototype.process = function(me)
Processes the given event and cell and marks the state returned by getState with the color returned by getMarkerColor.
mxGraph.prototype.processChange = function(change)
Processes the given change and invalidates the respective cached data in view.
mxHandle.prototype.processEvent = function(me)
Processes the given mxMouseEvent and invokes setPosition.
mxObjectCodec.prototype.processInclude = function(dec,
node,
into)
Returns true if the given node is an include directive and executes the include by decoding the XML document.
mxCoordinateAssignment.prototype.processReversedEdge = function(graph,
model)
Hook to add additional processing
prompt: function(message,
defaultValue)
Displays the given message in a prompt dialog.
mxEventObject.prototype.properties
Holds the properties as an associative array.
mxEditor.prototype.propertiesHeight
Specifies the height of the properties window in pixels.
mxEditor.prototype.propertiesResource
Specifies the resource key for the properties window title.
mxEditor.prototype.propertiesWidth
Specifies the width of the properties window in pixels.
Returns the square distance between a segment and a point.
mxDictionary.prototype.put = function(key,
value)
Stores the value under the given key and returns the previous value for that key.
mxStylesheet.prototype.putCellStyle = function(name,
style)
Stores the given map of key, value pairs under the given name in styles.
mxStylesheet.prototype.putDefaultEdgeStyle = function(style)
Sets the default style for edges using defaultEdge as the stylename.
mxStylesheet.prototype.putDefaultVertexStyle = function(style)
Sets the default style for vertices using defaultVertex as the stylename.
mxImageBundle.prototype.putImage = function(key,
value,
fallback)
Adds the specified entry to the map.
mxCodec.prototype.putObject = function(id,
obj)
Assoiates the given object with the given ID and returns the given object.
putValue: function(name,
obj)
Puts the given object into the registry under the given name.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General14.html b/docs/js-api/index/General14.html index 4a6e24cba..55b05e2cd 100644 --- a/docs/js-api/index/General14.html +++ b/docs/js-api/index/General14.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
Q
 quadOp, mxAbstractCanvas2D
 quadTo
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
Q
 quadOp, mxAbstractCanvas2D
 quadTo
-
mxAbstractCanvas2D.prototype.quadOp
Contains the string used for quadratic paths.
mxAbstractCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Adds a quadratic curve to the current path.
mxVmlCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Replaces quadratic curve with bezier curve in VML.
mxXmlCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Adds a quadratic curve to the current path.
+
mxAbstractCanvas2D.prototype.quadOp
Contains the string used for quadratic paths.
mxAbstractCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Adds a quadratic curve to the current path.
mxVmlCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Replaces quadratic curve with bezier curve in VML.
mxXmlCanvas2D.prototype.quadTo = function(x1,
y1,
x2,
y2)
Adds a quadratic curve to the current path.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General15.html b/docs/js-api/index/General15.html index 11fa68b31..83a0d7155 100644 --- a/docs/js-api/index/General15.html +++ b/docs/js-api/index/General15.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
R
 radius
 radiusSquared, mxFastOrganicLayout
 rankBottomY, mxCoordinateAssignment
 rankCoordinates, mxCoordinateAssignment
 rankIndex, WeightedCellSorter
 rankMedianPosition, mxCoordinateAssignment
 ranks
 ranksPerGroup, mxSwimlaneModel
 rankTopY, mxCoordinateAssignment
 rankWidths, mxCoordinateAssignment
 rankY, mxCoordinateAssignment
 readGraphModel, mxEditor
 RECEIVE, mxEvent
 reconfigure, mxShape
 rect
 RECTANGLE_ROUNDING_FACTOR, mxConstants
 rectangleIntersectsSegment, mxUtils
 RectanglePerimeter, mxPerimeter
 recursiveResize, mxGraph
 redirectMouseEvents, mxEvent
 redo
 REDO
 redone, mxUndoableEdit
 redraw
 redrawBackgroundImage, mxGraphView
 redrawCellOverlays, mxCellRenderer
 redrawControl, mxCellRenderer
 redrawHandles
 redrawHtml, mxShape
 redrawHtmlShape
 redrawIcons, mxConnectionHandler
 redrawInnerBends
 redrawLabel, mxCellRenderer
 redrawPath
 redrawShape, mxShape
 reduceTemperature, mxFastOrganicLayout
 refCount, mxSvgCanvas2D
 reference, mxCodec
 refresh
 REFRESH
 refreshHandler, mxSelectionCellsHandler
 refreshTasks, mxEditor
 register, mxCodecRegistry
 registerShape, mxCellRenderer
 relative, mxGeometry
 relativeCcw, mxUtils
 release, mxEvent
 releaseSvgGradients, mxShape
 remove
 REMOVE
 REMOVE_CELLS
 REMOVE_CELLS_FROM_PARENT
 REMOVE_OVERLAY
 removeAllListeners, mxEvent
 removeAllStylenames, mxUtils
 removeCell, mxGraphSelectionModel
 removeCellOverlay, mxGraph
 removeCellOverlays, mxGraph
 removeCells
 removeCellsFromParent
 removeCursors, mxUtils
 removeDragElement, mxDragSource
 removeEdge, mxCell
 removeEnabled, mxEdgeHandler
 removeFromParent, mxCell
 removeFromTerminal, mxCell
 removeGestureListeners, mxEvent
 removeHint
 removeImageBundle, mxGraph
 removeListener
 removeListeners, mxDragSource
 removeMouseListener, mxGraph
 removePoint, mxEdgeHandler
 removeSelectionCell, mxGraph
 removeSelectionCells, mxGraph
 removeState, mxGraphView
 removeStateForCell, mxGraph
 removeStylename, mxUtils
 removeWhitespace, mxUtils
 renderHint, mxGraph
 rendering, mxGraphView
 RENDERING_HINT_EXACT, mxConstants
 RENDERING_HINT_FASTER, mxConstants
 RENDERING_HINT_FASTEST, mxConstants
 renderPage, mxPrintPreview
 repaint
 replaceLinefeeds, mxText
 repositionValid, mxCoordinateAssignment
 request, mxXmlRequest
 reset
 RESET
 resetEdge, mxGraph
 resetEdges
 resetEdgesOnConnect, mxGraph
 resetEdgesOnMove, mxGraph
 resetEdgesOnResize, mxGraph
 resetFirstTime, mxEditor
 resetHandler
 resetHistory, mxEditor
 resetMode, mxToolbar
 resetTimer, mxTooltipHandler
 resetValidationState, mxGraphView
 resetViewOnRootChange, mxGraph
 resize
 RESIZE
 RESIZE_CELLS
 RESIZE_END
 RESIZE_START
 resizeCell
 resizeCells, mxGraph
 resizeChildCells, mxGraph
 resizeContainer, mxGraph
 resizeEnabled, mxSwimlaneManager
 resizeHandler, mxSpaceManager
 resizeHeight, mxDivResizer
 resizeLast, mxStackLayout
 resizeParent
 resizeSwimlane, mxSwimlaneManager
 resizeVertices, mxPartitionLayout
 resizeWidth, mxDivResizer
 resolve, mxCellPath
 resolveColor, mxCellRenderer
 resources, mxResources
 resourcesEncoded, mxResources
 restore
 restoreClone, mxGraphModel
 RESUME, mxEvent
 revalidate, mxGraphView
 revalidateState, mxCellStatePreview
 reverse, mxObjectCodec
 reversePortConstraints, mxUtils
 RhombusPerimeter, mxPerimeter
 root
 ROOT
 rootChanged, mxGraphModel
 roots
 rootx, mxRadialTreeLayout
 rooty, mxRadialTreeLayout
 rotate
 rotate90, mxRectangle
 rotateCell, mxVertexHandler
 rotatedHtmlBackground, mxVmlCanvas2D
 rotateHtml, mxAbstractCanvas2D
 rotateLabelBounds, mxCellRenderer
 rotatePoint
 ROTATION_HANDLE, mxEvent
 rotationCursor, mxVertexHandler
 rotationEnabled
 rotationHandleVSpacing, mxVertexHandler
 rotationRaster, mxVertexHandler
 roundAngle, mxVertexHandler
 roundLength
 roundrect
 route, mxParallelEdgeLayout
 row, mxRadialTreeLayout
 rowMaxCenX, mxRadialTreeLayout
 rowMaxX, mxRadialTreeLayout
 rowMinCenX, mxRadialTreeLayout
 rowMinX, mxRadialTreeLayout
 rowRadi, mxRadialTreeLayout
 rtrim, mxUtils
 run
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
R
 radius
 radiusSquared, mxFastOrganicLayout
 rankBottomY, mxCoordinateAssignment
 rankCoordinates, mxCoordinateAssignment
 rankIndex, WeightedCellSorter
 rankMedianPosition, mxCoordinateAssignment
 ranks
 ranksPerGroup, mxSwimlaneModel
 rankTopY, mxCoordinateAssignment
 rankWidths, mxCoordinateAssignment
 rankY, mxCoordinateAssignment
 readGraphModel, mxEditor
 RECEIVE, mxEvent
 reconfigure, mxShape
 rect
 RECTANGLE_ROUNDING_FACTOR, mxConstants
 rectangleIntersectsSegment, mxUtils
 RectanglePerimeter, mxPerimeter
 recursiveResize, mxGraph
 redirectMouseEvents, mxEvent
 redo
 REDO
 redone, mxUndoableEdit
 redraw
 redrawBackgroundImage, mxGraphView
 redrawCellOverlays, mxCellRenderer
 redrawControl, mxCellRenderer
 redrawHandles
 redrawHtml, mxShape
 redrawHtmlShape
 redrawIcons, mxConnectionHandler
 redrawInnerBends
 redrawLabel, mxCellRenderer
 redrawPath
 redrawShape, mxShape
 reduceTemperature, mxFastOrganicLayout
 refCount, mxSvgCanvas2D
 reference, mxCodec
 refresh
 REFRESH
 refreshHandler, mxSelectionCellsHandler
 refreshTasks, mxEditor
 register, mxCodecRegistry
 registerShape, mxCellRenderer
 relative, mxGeometry
 relativeCcw, mxUtils
 release, mxEvent
 releaseSvgGradients, mxShape
 remove
 REMOVE
 REMOVE_CELLS
 REMOVE_CELLS_FROM_PARENT
 REMOVE_OVERLAY
 removeAllListeners, mxEvent
 removeAllStylenames, mxUtils
 removeCell, mxGraphSelectionModel
 removeCellOverlay, mxGraph
 removeCellOverlays, mxGraph
 removeCells
 removeCellsFromParent
 removeCursors, mxUtils
 removeDragElement, mxDragSource
 removeEdge, mxCell
 removeEnabled, mxEdgeHandler
 removeFromParent, mxCell
 removeFromTerminal, mxCell
 removeGestureListeners, mxEvent
 removeHint
 removeImageBundle, mxGraph
 removeListener
 removeListeners, mxDragSource
 removeMouseListener, mxGraph
 removePoint, mxEdgeHandler
 removeSelectionCell, mxGraph
 removeSelectionCells, mxGraph
 removeState, mxGraphView
 removeStateForCell, mxGraph
 removeStylename, mxUtils
 removeWhitespace, mxUtils
 renderHint, mxGraph
 rendering, mxGraphView
 RENDERING_HINT_EXACT, mxConstants
 RENDERING_HINT_FASTER, mxConstants
 RENDERING_HINT_FASTEST, mxConstants
 renderPage, mxPrintPreview
 repaint
 replaceLinefeeds, mxText
 repositionValid, mxCoordinateAssignment
 request, mxXmlRequest
 reset
 RESET
 resetEdge, mxGraph
 resetEdges
 resetEdgesOnConnect, mxGraph
 resetEdgesOnMove, mxGraph
 resetEdgesOnResize, mxGraph
 resetFirstTime, mxEditor
 resetHandler
 resetHistory, mxEditor
 resetMode, mxToolbar
 resetTimer, mxTooltipHandler
 resetValidationState, mxGraphView
 resetViewOnRootChange, mxGraph
 resize
 RESIZE
 RESIZE_CELLS
 RESIZE_END
 RESIZE_START
 resizeCell
 resizeCells, mxGraph
 resizeChildCells, mxGraph
 resizeContainer, mxGraph
 resizeEnabled, mxSwimlaneManager
 resizeHandler, mxSpaceManager
 resizeHeight, mxDivResizer
 resizeLast, mxStackLayout
 resizeParent
 resizeSwimlane, mxSwimlaneManager
 resizeVertices, mxPartitionLayout
 resizeWidth, mxDivResizer
 resolve, mxCellPath
 resolveColor, mxCellRenderer
 resources, mxResources
 resourcesEncoded, mxResources
 restore
 restoreClone, mxGraphModel
 RESUME, mxEvent
 revalidate, mxGraphView
 revalidateState, mxCellStatePreview
 reverse, mxObjectCodec
 reversePortConstraints, mxUtils
 RhombusPerimeter, mxPerimeter
 root
 ROOT
 rootChanged, mxGraphModel
 roots
 rootx, mxRadialTreeLayout
 rooty, mxRadialTreeLayout
 rotate
 rotate90, mxRectangle
 rotateCell, mxVertexHandler
 rotatedHtmlBackground, mxVmlCanvas2D
 rotateHtml, mxAbstractCanvas2D
 rotateLabelBounds, mxCellRenderer
 rotatePoint
 ROTATION_HANDLE, mxEvent
 rotationCursor, mxVertexHandler
 rotationEnabled
 rotationHandleVSpacing, mxVertexHandler
 rotationRaster, mxVertexHandler
 roundAngle, mxVertexHandler
 roundLength
 roundrect
 route, mxParallelEdgeLayout
 row, mxRadialTreeLayout
 rowMaxCenX, mxRadialTreeLayout
 rowMaxX, mxRadialTreeLayout
 rowMinCenX, mxRadialTreeLayout
 rowMinX, mxRadialTreeLayout
 rowRadi, mxRadialTreeLayout
 rtrim, mxUtils
 run
-
mxCircleLayout.prototype.radius
Integer specifying the size of the radius.
mxFastOrganicLayout.prototype.radius
The approximate radius of each cell, nodes only.
mxFastOrganicLayout.prototype.radiusSquared
The approximate radius squared of each cell, nodes only.
mxCoordinateAssignment.prototype.rankBottomY
Internal cache of bottom-most value of Y for each rank
mxCoordinateAssignment.prototype.rankCoordinates = function(rankValue,
graph,
model)
Sets up the layout in an initial positioning.
WeightedCellSorter.prototype.rankIndex
The index this cell is in the model rank.
mxCoordinateAssignment.prototype.rankMedianPosition = function(rankValue,
model,
nextRankValue)
Performs median minimisation over one rank.
mxGraphHierarchyModel.prototype.ranks
Mapping from rank number to actual rank
mxSwimlaneModel.prototype.ranks
Mapping from rank number to actual rank
mxSwimlaneModel.prototype.ranksPerGroup
An array of the number of ranks within each swimlane
mxCoordinateAssignment.prototype.rankTopY
Internal cache of top-most values of Y for each rank
mxCoordinateAssignment.prototype.rankWidths
The width of all the ranks
mxCoordinateAssignment.prototype.rankY
The Y-coordinate of all the ranks
mxEditor.prototype.readGraphModel = function (node)
Reads the specified XML node into the existing graph model and resets the command history and modified state.
Specifies the event name for receive.
mxShape.prototype.reconfigure = function()
Reconfigures this shape.
mxSvgCanvas2D.prototype.rect = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.rect = function(x,
y,
w,
h)
Sets the current path to a rectangle.
mxXmlCanvas2D.prototype.rect = function(x,
y,
w,
h)
Puts a rectangle into the drawing buffer.
Defines the rounding factor for rounded rectangles in percent between 0 and 1.
rectangleIntersectsSegment: function(bounds,
p1,
p2)
Returns true if the given rectangle intersects the given segment.
RectanglePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a rectangular perimeter for the given bounds.
mxGraph.prototype.recursiveResize
Specifies the return value for isRecursiveResize.
redirectMouseEvents: function(node,
graph,
state,
down,
move,
up,
dblClick)
Redirects the mouse events from the given DOM node to the graph dispatch loop using the event and given state as event arguments.
mxEditor.prototype.redo = function ()
Redo the last change in graph.
mxUndoableEdit.prototype.redo = function()
Redoes all changes in this edit.
mxUndoManager.prototype.redo = function()
Redoes the last change.
Specifies the event name for redo.
Fires afer a significant edit was redone in redo.
mxUndoableEdit.prototype.redone
Specifies if this edit has been redone.
mxEdgeSegmentHandler.prototype.redraw = function()
Overridden to invoke refresh before the redraw.
mxCellRenderer.prototype.redraw = function(state,
force,
rendering)
Updates the bounds or points and scale of the shapes for the given cell state.
mxEdgeHandler.prototype.redraw = function()
Redraws the preview, and the bends- and label control points.
mxImageShape.prototype.redrawHtmlShape = function()
Overrides mxShape.redraw to preserve the aspect ratio of images.
mxLabel.prototype.redraw = function()
Reconfigures this shape.
mxShape.prototype.redraw = function()
Creates and returns the SVG node(s) to represent this shape.
mxHandle.prototype.redraw = function()
Renders the shape for this handle.
mxGraphView.prototype.redrawBackgroundImage = function(backgroundImage,
bg)
Updates the bounds and redraws the background image.
mxCellRenderer.prototype.redrawCellOverlays = function(state,
forced)
Redraws the overlays for the given cell state.
mxCellRenderer.prototype.redrawControl = function(state,
forced)
Redraws the control for the given cell state.
mxEdgeHandler.prototype.redrawHandles = function()
Redraws the handles.
mxVertexHandler.prototype.redrawHandles = function()
Redraws the handles.
mxShape.prototype.redrawHtmlShape = function()
Allow optimization by replacing VML with HTML.
mxLabel.prototype.redrawHtmlShape = function()
Generic background painting implementation.
mxText.prototype.redrawHtmlShape = function()
Updates the HTML node(s) to reflect the latest bounds and scale.
mxConnectionHandler.prototype.redrawIcons = function(icons,
state)
Redraws the given array of mxImageShapes.
mxEdgeSegmentHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates the position of the custom bends.
mxEdgeHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates and redraws the inner bends.
mxElbowEdgeHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates and redraws the inner bends.
mxCellRenderer.prototype.redrawLabel = function(state,
forced)
Redraws the label for the given cell state.
mxActor.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxCloud.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxCylinder.prototype.redrawPath = function(c,
x,
y,
w,
h,
isForeground)
Draws the path for this shape.
mxHexagon.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxTriangle.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxShape.prototype.redrawShape = function()
Updates the SVG or VML shape.
mxFastOrganicLayout.prototype.reduceTemperature = function()
Reduces the temperature of the layout from an initial setting in a linear fashion to zero.
mxSvgCanvas2D.prototype.refCount
Local counter for references in SVG export.
mxCodec.prototype.reference = function(obj)
Hook for subclassers to implement a custom method for retrieving IDs from objects.
mxEdgeHandler.prototype.refresh = function()
Refreshes the bends of this handler.
mxGraph.prototype.refresh = function(cell)
Clears all cell states or the states for the hierarchy starting at the given cell and validates the graph.
mxGraphView.prototype.refresh = function()
Clears the view if currentRoot is not null and revalidates.
mxOutline.prototype.refresh = function()
Invokes update and revalidate the outline.
mxSelectionCellsHandler.prototype.refresh = function()
Reloads or updates all handlers.
Specifies the event name for refresh.
Fires after refresh was executed.
mxSelectionCellsHandler.prototype.refreshHandler
Keeps a reference to an event listener for later removal.
mxEditor.prototype.refreshTasks = function (div)
Updates the contents of the tasks window using createTasks.
register: function(codec)
Registers a new codec and associates the name of the template constructor in the codec with the codec object.
mxCellRenderer.registerShape = function(key,
shape)
Registers the given constructor under the specified key in this instance of the renderer.
mxGeometry.prototype.relative
Specifies if the coordinates in the geometry are to be interpreted as relative coordinates.
relativeCcw: function(x1,
y1,
x2,
y2,
px,
py)
Returns 1 if the given point on the right side of the segment, 0 if its on the segment, and -1 if the point is on the left side of the segment.
release: function(element)
Removes the known listeners from the given DOM node and its descendants.
mxShape.prototype.releaseSvgGradients = function(grads)
Paints the line shape.
mxCell.prototype.remove = function(index)
Removes the child at the specified index from the child array and returns the child that was removed.
mxDictionary.prototype.remove = function(key)
Removes the value for the given key and returns the value that has been removed.
mxGraphModel.prototype.remove = function(cell)
Removes the specified cell from the model using mxChildChange and adds the change to the current transaction.
remove: function(obj,
array)
Removes all occurrences of the given object in the given array or object.
Specifies the event name for remove.
Fires if a cell has been remove from the selection.
Specifies the event name for removeCells.
Fires between begin- and endUpdate in removeCells.
Specifies the event name for removeCellsFromParent.
Fires between begin- and endUpdate in removeCellsFromParent.
Specifies the event name for removeOverlay.
Fires after an overlay is removed in removeCellOverlay and removeCellOverlays.
removeAllListeners: function(element)
Removes all listeners from the given element.
removeAllStylenames: function(style)
Removes all stylenames from the given style and returns the updated style.
mxGraphSelectionModel.prototype.removeCell = function(cell)
Removes the specified mxCell from the selection and fires a select event for the remaining cells.
mxGraph.prototype.removeCellOverlay = function(cell,
overlay)
Removes and returns the given mxCellOverlay from the given cell.
mxGraph.prototype.removeCellOverlays = function(cell)
Removes all mxCellOverlays from the given cell.
removeCells: function(graph,
cells)
Hook to remove the given cells from the given graph after a cut operation.
mxGraph.prototype.removeCells = function(cells,
includeEdges)
Removes the given cells from the graph including all connected edges if includeEdges is true.
mxGraphSelectionModel.prototype.removeCells = function(cells)
mxGraph.prototype.removeCellsFromParent = function(cells)
Removes the specified cells from their parents and adds them to the default parent.
mxGraphHandler.prototype.removeCellsFromParent
Specifies if cells may be moved out of their parents.
removeCursors: function(element)
Removes the cursors from the style of the given DOM node and its descendants.
mxDragSource.prototype.removeDragElement = function()
Removes and destroys the dragElement.
mxCell.prototype.removeEdge = function(edge,
isOutgoing)
Removes the specified edge from the edge array and returns the edge.
mxEdgeHandler.prototype.removeEnabled
Specifies if removing bends by shift-click is enabled.
mxCell.prototype.removeFromParent = function()
Removes the cell from its parent.
mxCell.prototype.removeFromTerminal = function(isSource)
Removes the edge from its source or target terminal.
removeGestureListeners: function(node,
startListener,
moveListener,
endListener)
Removes the given listeners from mousedown, mousemove, mouseup and the respective touch events if mxClient.IS_TOUCH is true.
mxEdgeHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxGraphHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxVertexHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxGraph.prototype.removeImageBundle = function(bundle)
Removes the specified mxImageBundle.
removeListener: function()
Removes the specified listener from the given element.
mxEventSource.prototype.removeListener = function(funct)
Removes all occurrences of the given listener from eventListeners.
mxDragSource.prototype.removeListeners = function()
Actives the given graph as a drop target.
mxGraph.prototype.removeMouseListener = function(listener)
Removes the specified graph listener.
mxEdgeHandler.prototype.removePoint = function(state,
index)
Removes the control point at the given index from the given state.
mxGraph.prototype.removeSelectionCell = function(cell)
Removes the given cell from the selection.
mxGraph.prototype.removeSelectionCells = function(cells)
Removes the given cells from the selection.
mxGraphView.prototype.removeState = function(cell)
Removes and returns the mxCellState for the given cell.
mxGraph.prototype.removeStateForCell = function(cell)
Removes all cached information for the given cell and its descendants.
removeStylename: function(style,
stylename)
Removes all occurrences of the specified stylename in the given style and returns the updated style.
removeWhitespace: function(node,
before)
Removes the sibling text nodes for the given node that only consists of tabs, newlines and spaces.
mxGraph.prototype.renderHint
RenderHint as it was passed to the constructor.
mxGraphView.prototype.rendering
Specifies if shapes should be created, updated and destroyed using the methods of mxCellRenderer in graph.
Defines the exact rendering hint.
Defines the faster rendering hint.
Defines the fastest rendering hint.
mxPrintPreview.prototype.renderPage = function(w,
h,
dx,
dy,
content)
Creates a DIV that prints a single page of the given graph using the given scale and returns the DIV that represents the page.
mxCellHighlight.prototype.repaint = function()
Updates the highlight after a change of the model or view.
mxRubberband.prototype.repaint = function()
Computes the bounding box and updates the style of the div.
mxText.prototype.replaceLinefeeds
Specifies if linefeeds in HTML labels should be replaced with BR tags.
mxCoordinateAssignment.prototype.repositionValid = function(model,
cell,
rank,
position)
Determines whether or not a node may be moved to the specified x position on the specified rank
mxXmlRequest.prototype.request
Holds the inner, browser-specific request object.
mxAbstractCanvas2D.prototype.reset = function()
Resets the state of this canvas.
mxAutoSaveManager.prototype.reset = function()
Resets all counters.
mxCellMarker.prototype.reset = function()
Resets the state of the cell marker.
mxConnectionHandler.prototype.reset = function()
Resets the state of this handler.
mxConstraintHandler.prototype.reset = function()
Resets the state of this handler.
mxDragSource.prototype.reset = function()
Stops and removes everything and restores the state of the object.
mxEdgeHandler.prototype.reset = function()
Resets the state of this handler.
mxGraphHandler.prototype.reset = function()
Resets the state of this handler.
mxRubberband.prototype.reset = function()
Resets the state of the rubberband selection.
mxSelectionCellsHandler.prototype.reset = function()
Resets all handlers.
mxSvgCanvas2D.prototype.reset = function()
Returns any offsets for rendering pixels.
mxTooltipHandler.prototype.reset = function(me,
restart)
Resets and/or restarts the timer to trigger the display of the tooltip.
mxHandle.prototype.reset = function()
Resets the state of this handle by setting its visibility to true.
Fires when the reset method is invoked.
RESET: 'reset' }
Specifies the event name for reset.
mxGraph.prototype.resetEdge = function(edge)
Resets the control points of the given edge.
mxCircleLayout.prototype.resetEdges
Specifies if all edge points of traversed edges should be removed.
mxCompactTreeLayout.prototype.resetEdges
Specifies if all edge points of traversed edges should be removed.
mxFastOrganicLayout.prototype.resetEdges
Specifies if all edge points of traversed edges should be removed.
mxGraph.prototype.resetEdges = function(cells)
Resets the control points of the edges that are connected to the given cells if not both ends of the edge are in the given cells array.
mxGraph.prototype.resetEdgesOnConnect
Specifies if edge control points should be reset after the the edge has been reconnected.
mxGraph.prototype.resetEdgesOnMove
Specifies if edge control points should be reset after the move of a connected cell.
mxGraph.prototype.resetEdgesOnResize
Specifies if edge control points should be reset after the resize of a connected cell.
mxEditor.prototype.resetFirstTime = function ()
Resets the cookie that is used to remember if the editor has already been used.
mxCellHighlight.prototype.resetHandler
Holds the handler that automatically invokes reset if the highlight should be hidden.
mxDefaultToolbar.prototype.resetHandler
Reference to the function used to reset the toolbar.
mxEditor.prototype.resetHistory = function ()
Resets the command history, modified state and counters.
mxToolbar.prototype.resetMode = function(forced)
Selects the default mode and resets the state of the previously selected mode.
mxTooltipHandler.prototype.resetTimer = function()
Resets the timer.
mxGraphView.prototype.resetValidationState = function()
Resets the current validation state.
mxGraph.prototype.resetViewOnRootChange
Specifies if the scale and translate should be reset if the root changes in the model.
mxCellEditor.prototype.resize = function()
Returns modified.
mxDivResizer.prototype.resize = function()
Updates the style of the DIV after the window has been resized.
Specifies the event name for resize.
Fires while the window is being resized.
Specifies the event name for resizeCells.
Fires between begin- and endUpdate in resizeCells.
Specifies the event name for resizeEnd.
Fires after the window is resized.
Specifies the event name for resizeStart.
Fires before the window is resized.
mxGraph.prototype.resizeCell = function(cell,
bounds,
recurse)
Sets the bounds of the given cell using resizeCells.
mxVertexHandler.prototype.resizeCell = function(cell,
dx,
dy,
index,
gridEnabled,
constrained,
recurse)
Uses the given vector to change the bounds of the given cell in the graph using mxGraph.resizeCell.
mxGraph.prototype.resizeCells = function(cells,
bounds,
recurse)
Sets the bounds of the given cells and fires a mxEvent.RESIZE_CELLS event while the transaction is in progress.
mxGraph.prototype.resizeChildCells = function(cell,
newGeo)
Resizes the child cells of the given cell for the given new geometry with respect to the current geometry of the cell.
mxGraph.prototype.resizeContainer
Specifies if the container should be resized to the graph size when the graph size has changed.
mxSwimlaneManager.prototype.resizeEnabled
Specifies if resizing of swimlanes should be handled.
mxSpaceManager.prototype.resizeHandler
Holds the function that handles the move event.
Boolean specifying if the height should be updated.
mxStackLayout.prototype.resizeLast
If the last element should be resized to fill out the parent.
mxCompactTreeLayout.prototype.resizeParent
If the parents should be resized to match the width/height of the children.
mxHierarchicalLayout.prototype.resizeParent
Specifies if the parent should be resized after the layout so that it contains all the child cells.
mxStackLayout.prototype.resizeParent
If the parent should be resized to match the width/height of the stack.
mxSwimlaneLayout.prototype.resizeParent
Specifies if the parent should be resized after the layout so that it contains all the child cells.
mxSwimlaneManager.prototype.resizeSwimlane = function(swimlane,
w,
h,
parentHorizontal)
Called from cellsResized for all swimlanes that are not ignored to update the size of the siblings and the size of the parent swimlanes, recursively, if bubbling is true.
mxPartitionLayout.prototype.resizeVertices
Boolean that specifies if vertices should be resized.
Boolean specifying if the width should be updated.
resolve: function(root,
path)
Returns the cell for the specified cell path using the given root as the root of the path.
mxCellRenderer.prototype.resolveColor = function(state,
field,
key)
Resolves special keywords ‘inherit’, ‘indicated’ and ‘swimlane’ and sets the respective color on the shape.
Associative array that maps from keys to values.
Specifies whether or not values in resource files are encoded with \u or percentage.
mxAbstractCanvas2D.prototype.restore = function()
Restores the current state.
mxXmlCanvas2D.prototype.restore = function()
Restores the drawing state.
mxGraphModel.prototype.restoreClone = function(clone,
cell,
mapping)
Inner helper method for restoring the connections in a network of cloned cells.
Specifies the event name for suspend.
mxGraphView.prototype.revalidate = function()
Revalidates the complete view with all cell states.
mxCellStatePreview.prototype.revalidateState = function(state,
dx,
dy,
visitor)
mxObjectCodec.prototype.reverse
Maps from from XML attribute names to fieldnames.
reversePortConstraints: function(constraint)
Reverse the port constraint bitmask.
RhombusPerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a rhombus (aka diamond) perimeter.
mxCompactTreeLayout.prototype.root
The cell to use as the root of the tree
mxGraphModel.prototype.root
Holds the root cell, which in turn contains the cells that represent the layers of the diagram as child cells.
this.root
Reference to the container for the SVG content.
this.root
Reference to the container for the SVG content.
this.root
Reference to the container for the SVG content.
Fires when the current root has changed, or when the title of the current root has changed.
Specifies the event name for root.
Fires if the root in the model has changed.
mxGraphModel.prototype.rootChanged = function(root)
Inner callback to change the root of the model and update the internal datastructures, such as cells and nextId.
mxGraphHierarchyModel.prototype.roots
Store of roots of this hierarchy model, these are real graph cells, not internal cells
mxHierarchicalLayout.prototype.roots
Holds the array of mxCell that this layout contains.
mxSwimlaneLayout.prototype.roots
Holds the array of mxCell that this layout contains.
mxSwimlaneModel.prototype.roots
Store of roots of this hierarchy model, these are real graph cells, not internal cells
mxRadialTreeLayout.prototype.rootx
The X co-ordinate of the root cell
mxRadialTreeLayout.prototype.rooty
The Y co-ordinate of the root cell
mxGeometry.prototype.rotate = function(angle,
cx)
Rotates the geometry by the given angle around the given center.
mxSvgCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxVmlCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxXmlCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Rotates and/or flips the output around a given center.
mxRectangle.prototype.rotate90 = function()
Rotates this rectangle by 90 degree around its center point.
Rotates the given cell to the given rotation.
mxVmlCanvas2D.prototype.rotatedHtmlBackground
Background color for rotated HTML.
mxAbstractCanvas2D.prototype.rotateHtml
Switch for rotation of HTML.
mxCellRenderer.prototype.rotateLabelBounds = function(state,
bounds)
Adds the shape rotation to the given label bounds and applies the alignment and offsets.
mxAbstractCanvas2D.prototype.rotatePoint = function(x,
y,
theta,
cx,
cy)
Rotates the given point and returns the result as an mxPoint.
mxHandle.prototype.rotatePoint = function(pt,
alpha)
Rotates the point by the given angle.
Index for the rotation handle in an mxMouseEvent.
mxVertexHandler.prototype.rotationCursor
Specifies the cursor for the rotation handle.
mxGraphHandler.prototype.rotationEnabled
Specifies if the bounding box should allow for rotation.
mxVertexHandler.prototype.rotationEnabled
Specifies if a rotation handle should be visible.
mxVertexHandler.prototype.rotationHandleVSpacing
Vertical spacing for rotation icon.
mxVertexHandler.prototype.rotationRaster
Specifies if rotation steps should be “rasterized” depening on the distance to the handle.
mxVertexHandler.prototype.roundAngle = function(angle)
Hook for rounding the angle.
mxEdgeHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled width or height.
mxGraphHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled vector.
mxVertexHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled width or height.
mxSvgCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Sets the current path to a rounded rectangle.
mxXmlCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Puts a rounded rectangle into the drawing buffer.
mxParallelEdgeLayout.prototype.route = function(edge,
x,
y)
Routes the given edge via the given point.
mxRadialTreeLayout.prototype.row
Array of vertices on each row
mxRadialTreeLayout.prototype.rowMaxCenX
Array of x coordinate of rightmost vertex of each row
mxRadialTreeLayout.prototype.rowMaxX
Array of rightmost x coordinate of each row
mxRadialTreeLayout.prototype.rowMinCenX
Array of x coordinate of leftmost vertex of each row
mxRadialTreeLayout.prototype.rowMinX
Array of leftmost x coordinate of each row
mxRadialTreeLayout.prototype.rowRadi
Array of y deltas of each row behind root vertex, also the radius in the tree
rtrim: function(str,
chars)
Strips all whitespaces from the end of the string.
mxHierarchicalLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
mxSwimlaneLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
+
mxCircleLayout.prototype.radius
Integer specifying the size of the radius.
mxFastOrganicLayout.prototype.radius
The approximate radius of each cell, nodes only.
mxFastOrganicLayout.prototype.radiusSquared
The approximate radius squared of each cell, nodes only.
mxCoordinateAssignment.prototype.rankBottomY
Internal cache of bottom-most value of Y for each rank
mxCoordinateAssignment.prototype.rankCoordinates = function(rankValue,
graph,
model)
Sets up the layout in an initial positioning.
WeightedCellSorter.prototype.rankIndex
The index this cell is in the model rank.
mxCoordinateAssignment.prototype.rankMedianPosition = function(rankValue,
model,
nextRankValue)
Performs median minimisation over one rank.
mxGraphHierarchyModel.prototype.ranks
Mapping from rank number to actual rank
mxSwimlaneModel.prototype.ranks
Mapping from rank number to actual rank
mxSwimlaneModel.prototype.ranksPerGroup
An array of the number of ranks within each swimlane
mxCoordinateAssignment.prototype.rankTopY
Internal cache of top-most values of Y for each rank
mxCoordinateAssignment.prototype.rankWidths
The width of all the ranks
mxCoordinateAssignment.prototype.rankY
The Y-coordinate of all the ranks
mxEditor.prototype.readGraphModel = function (node)
Reads the specified XML node into the existing graph model and resets the command history and modified state.
Specifies the event name for receive.
mxShape.prototype.reconfigure = function()
Reconfigures this shape.
mxSvgCanvas2D.prototype.rect = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.rect = function(x,
y,
w,
h)
Sets the current path to a rectangle.
mxXmlCanvas2D.prototype.rect = function(x,
y,
w,
h)
Puts a rectangle into the drawing buffer.
Defines the rounding factor for rounded rectangles in percent between 0 and 1.
rectangleIntersectsSegment: function(bounds,
p1,
p2)
Returns true if the given rectangle intersects the given segment.
RectanglePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a rectangular perimeter for the given bounds.
mxGraph.prototype.recursiveResize
Specifies the return value for isRecursiveResize.
redirectMouseEvents: function(node,
graph,
state,
down,
move,
up,
dblClick)
Redirects the mouse events from the given DOM node to the graph dispatch loop using the event and given state as event arguments.
mxEditor.prototype.redo = function ()
Redo the last change in graph.
mxUndoableEdit.prototype.redo = function()
Redoes all changes in this edit.
mxUndoManager.prototype.redo = function()
Redoes the last change.
Specifies the event name for redo.
Fires afer a significant edit was redone in redo.
mxUndoableEdit.prototype.redone
Specifies if this edit has been redone.
mxEdgeSegmentHandler.prototype.redraw = function()
Overridden to invoke refresh before the redraw.
mxCellRenderer.prototype.redraw = function(state,
force,
rendering)
Updates the bounds or points and scale of the shapes for the given cell state.
mxEdgeHandler.prototype.redraw = function()
Redraws the preview, and the bends- and label control points.
mxImageShape.prototype.redrawHtmlShape = function()
Overrides mxShape.redraw to preserve the aspect ratio of images.
mxLabel.prototype.redraw = function()
Reconfigures this shape.
mxShape.prototype.redraw = function()
Creates and returns the SVG node(s) to represent this shape.
mxHandle.prototype.redraw = function()
Renders the shape for this handle.
mxGraphView.prototype.redrawBackgroundImage = function(backgroundImage,
bg)
Updates the bounds and redraws the background image.
mxCellRenderer.prototype.redrawCellOverlays = function(state,
forced)
Redraws the overlays for the given cell state.
mxCellRenderer.prototype.redrawControl = function(state,
forced)
Redraws the control for the given cell state.
mxEdgeHandler.prototype.redrawHandles = function()
Redraws the handles.
mxVertexHandler.prototype.redrawHandles = function()
Redraws the handles.
mxShape.prototype.redrawHtmlShape = function()
Allow optimization by replacing VML with HTML.
mxLabel.prototype.redrawHtmlShape = function()
Generic background painting implementation.
mxText.prototype.redrawHtmlShape = function()
Updates the HTML node(s) to reflect the latest bounds and scale.
mxConnectionHandler.prototype.redrawIcons = function(icons,
state)
Redraws the given array of mxImageShapes.
mxEdgeSegmentHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates the position of the custom bends.
mxEdgeHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates and redraws the inner bends.
mxElbowEdgeHandler.prototype.redrawInnerBends = function(p0,
pe)
Updates and redraws the inner bends.
mxCellRenderer.prototype.redrawLabel = function(state,
forced)
Redraws the label for the given cell state.
mxActor.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxCloud.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxCylinder.prototype.redrawPath = function(c,
x,
y,
w,
h,
isForeground)
Draws the path for this shape.
mxHexagon.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxTriangle.prototype.redrawPath = function(c,
x,
y,
w,
h)
Draws the path for this shape.
mxShape.prototype.redrawShape = function()
Updates the SVG or VML shape.
mxFastOrganicLayout.prototype.reduceTemperature = function()
Reduces the temperature of the layout from an initial setting in a linear fashion to zero.
mxSvgCanvas2D.prototype.refCount
Local counter for references in SVG export.
mxCodec.prototype.reference = function(obj)
Hook for subclassers to implement a custom method for retrieving IDs from objects.
mxEdgeHandler.prototype.refresh = function()
Refreshes the bends of this handler.
mxGraph.prototype.refresh = function(cell)
Clears all cell states or the states for the hierarchy starting at the given cell and validates the graph.
mxGraphView.prototype.refresh = function()
Clears the view if currentRoot is not null and revalidates.
mxOutline.prototype.refresh = function()
Invokes update and revalidate the outline.
mxSelectionCellsHandler.prototype.refresh = function()
Reloads or updates all handlers.
Specifies the event name for refresh.
Fires after refresh was executed.
mxSelectionCellsHandler.prototype.refreshHandler
Keeps a reference to an event listener for later removal.
mxEditor.prototype.refreshTasks = function (div)
Updates the contents of the tasks window using createTasks.
register: function(codec)
Registers a new codec and associates the name of the template constructor in the codec with the codec object.
mxCellRenderer.registerShape = function(key,
shape)
Registers the given constructor under the specified key in this instance of the renderer.
mxGeometry.prototype.relative
Specifies if the coordinates in the geometry are to be interpreted as relative coordinates.
relativeCcw: function(x1,
y1,
x2,
y2,
px,
py)
Returns 1 if the given point on the right side of the segment, 0 if its on the segment, and -1 if the point is on the left side of the segment.
release: function(element)
Removes the known listeners from the given DOM node and its descendants.
mxShape.prototype.releaseSvgGradients = function(grads)
Paints the line shape.
mxCell.prototype.remove = function(index)
Removes the child at the specified index from the child array and returns the child that was removed.
mxDictionary.prototype.remove = function(key)
Removes the value for the given key and returns the value that has been removed.
mxGraphModel.prototype.remove = function(cell)
Removes the specified cell from the model using mxChildChange and adds the change to the current transaction.
remove: function(obj,
array)
Removes all occurrences of the given object in the given array or object.
Specifies the event name for remove.
Fires if a cell has been remove from the selection.
Specifies the event name for removeCells.
Fires between begin- and endUpdate in removeCells.
Specifies the event name for removeCellsFromParent.
Fires between begin- and endUpdate in removeCellsFromParent.
Specifies the event name for removeOverlay.
Fires after an overlay is removed in removeCellOverlay and removeCellOverlays.
removeAllListeners: function(element)
Removes all listeners from the given element.
removeAllStylenames: function(style)
Removes all stylenames from the given style and returns the updated style.
mxGraphSelectionModel.prototype.removeCell = function(cell)
Removes the specified mxCell from the selection and fires a select event for the remaining cells.
mxGraph.prototype.removeCellOverlay = function(cell,
overlay)
Removes and returns the given mxCellOverlay from the given cell.
mxGraph.prototype.removeCellOverlays = function(cell)
Removes all mxCellOverlays from the given cell.
removeCells: function(graph,
cells)
Hook to remove the given cells from the given graph after a cut operation.
mxGraph.prototype.removeCells = function(cells,
includeEdges)
Removes the given cells from the graph including all connected edges if includeEdges is true.
mxGraphSelectionModel.prototype.removeCells = function(cells)
mxGraph.prototype.removeCellsFromParent = function(cells)
Removes the specified cells from their parents and adds them to the default parent.
mxGraphHandler.prototype.removeCellsFromParent
Specifies if cells may be moved out of their parents.
removeCursors: function(element)
Removes the cursors from the style of the given DOM node and its descendants.
mxDragSource.prototype.removeDragElement = function()
Removes and destroys the dragElement.
mxCell.prototype.removeEdge = function(edge,
isOutgoing)
Removes the specified edge from the edge array and returns the edge.
mxEdgeHandler.prototype.removeEnabled
Specifies if removing bends by shift-click is enabled.
mxCell.prototype.removeFromParent = function()
Removes the cell from its parent.
mxCell.prototype.removeFromTerminal = function(isSource)
Removes the edge from its source or target terminal.
removeGestureListeners: function(node,
startListener,
moveListener,
endListener)
Removes the given listeners from mousedown, mousemove, mouseup and the respective touch events if mxClient.IS_TOUCH is true.
mxEdgeHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxGraphHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxVertexHandler.prototype.removeHint = function()
Hooks for subclassers to hide details when the handler gets inactive.
mxGraph.prototype.removeImageBundle = function(bundle)
Removes the specified mxImageBundle.
removeListener: function()
Removes the specified listener from the given element.
mxEventSource.prototype.removeListener = function(funct)
Removes all occurrences of the given listener from eventListeners.
mxDragSource.prototype.removeListeners = function()
Actives the given graph as a drop target.
mxGraph.prototype.removeMouseListener = function(listener)
Removes the specified graph listener.
mxEdgeHandler.prototype.removePoint = function(state,
index)
Removes the control point at the given index from the given state.
mxGraph.prototype.removeSelectionCell = function(cell)
Removes the given cell from the selection.
mxGraph.prototype.removeSelectionCells = function(cells)
Removes the given cells from the selection.
mxGraphView.prototype.removeState = function(cell)
Removes and returns the mxCellState for the given cell.
mxGraph.prototype.removeStateForCell = function(cell)
Removes all cached information for the given cell and its descendants.
removeStylename: function(style,
stylename)
Removes all occurrences of the specified stylename in the given style and returns the updated style.
removeWhitespace: function(node,
before)
Removes the sibling text nodes for the given node that only consists of tabs, newlines and spaces.
mxGraph.prototype.renderHint
RenderHint as it was passed to the constructor.
mxGraphView.prototype.rendering
Specifies if shapes should be created, updated and destroyed using the methods of mxCellRenderer in graph.
Defines the exact rendering hint.
Defines the faster rendering hint.
Defines the fastest rendering hint.
mxPrintPreview.prototype.renderPage = function(w,
h,
dx,
dy,
content)
Creates a DIV that prints a single page of the given graph using the given scale and returns the DIV that represents the page.
mxCellHighlight.prototype.repaint = function()
Updates the highlight after a change of the model or view.
mxRubberband.prototype.repaint = function()
Computes the bounding box and updates the style of the div.
mxText.prototype.replaceLinefeeds
Specifies if linefeeds in HTML labels should be replaced with BR tags.
mxCoordinateAssignment.prototype.repositionValid = function(model,
cell,
rank,
position)
Determines whether or not a node may be moved to the specified x position on the specified rank
mxXmlRequest.prototype.request
Holds the inner, browser-specific request object.
mxAbstractCanvas2D.prototype.reset = function()
Resets the state of this canvas.
mxAutoSaveManager.prototype.reset = function()
Resets all counters.
mxCellMarker.prototype.reset = function()
Resets the state of the cell marker.
mxConnectionHandler.prototype.reset = function()
Resets the state of this handler.
mxConstraintHandler.prototype.reset = function()
Resets the state of this handler.
mxDragSource.prototype.reset = function()
Stops and removes everything and restores the state of the object.
mxEdgeHandler.prototype.reset = function()
Resets the state of this handler.
mxGraphHandler.prototype.reset = function()
Resets the state of this handler.
mxRubberband.prototype.reset = function()
Resets the state of the rubberband selection.
mxSelectionCellsHandler.prototype.reset = function()
Resets all handlers.
mxSvgCanvas2D.prototype.reset = function()
Returns any offsets for rendering pixels.
mxTooltipHandler.prototype.reset = function(me,
restart)
Resets and/or restarts the timer to trigger the display of the tooltip.
mxHandle.prototype.reset = function()
Resets the state of this handle by setting its visibility to true.
Fires when the reset method is invoked.
RESET: 'reset' }
Specifies the event name for reset.
mxGraph.prototype.resetEdge = function(edge)
Resets the control points of the given edge.
mxCircleLayout.prototype.resetEdges
Specifies if all edge points of traversed edges should be removed.
mxCompactTreeLayout.prototype.resetEdges
Specifies if all edge points of traversed edges should be removed.
mxFastOrganicLayout.prototype.resetEdges
Specifies if all edge points of traversed edges should be removed.
mxGraph.prototype.resetEdges = function(cells)
Resets the control points of the edges that are connected to the given cells if not both ends of the edge are in the given cells array.
mxGraph.prototype.resetEdgesOnConnect
Specifies if edge control points should be reset after the the edge has been reconnected.
mxGraph.prototype.resetEdgesOnMove
Specifies if edge control points should be reset after the move of a connected cell.
mxGraph.prototype.resetEdgesOnResize
Specifies if edge control points should be reset after the resize of a connected cell.
mxEditor.prototype.resetFirstTime = function ()
Resets the cookie that is used to remember if the editor has already been used.
mxCellHighlight.prototype.resetHandler
Holds the handler that automatically invokes reset if the highlight should be hidden.
mxDefaultToolbar.prototype.resetHandler
Reference to the function used to reset the toolbar.
mxEditor.prototype.resetHistory = function ()
Resets the command history, modified state and counters.
mxToolbar.prototype.resetMode = function(forced)
Selects the default mode and resets the state of the previously selected mode.
mxTooltipHandler.prototype.resetTimer = function()
Resets the timer.
mxGraphView.prototype.resetValidationState = function()
Resets the current validation state.
mxGraph.prototype.resetViewOnRootChange
Specifies if the scale and translate should be reset if the root changes in the model.
mxCellEditor.prototype.resize = function()
Returns modified.
mxDivResizer.prototype.resize = function()
Updates the style of the DIV after the window has been resized.
Specifies the event name for resize.
Fires while the window is being resized.
Specifies the event name for resizeCells.
Fires between begin- and endUpdate in resizeCells.
Specifies the event name for resizeEnd.
Fires after the window is resized.
Specifies the event name for resizeStart.
Fires before the window is resized.
mxGraph.prototype.resizeCell = function(cell,
bounds,
recurse)
Sets the bounds of the given cell using resizeCells.
mxVertexHandler.prototype.resizeCell = function(cell,
dx,
dy,
index,
gridEnabled,
constrained,
recurse)
Uses the given vector to change the bounds of the given cell in the graph using mxGraph.resizeCell.
mxGraph.prototype.resizeCells = function(cells,
bounds,
recurse)
Sets the bounds of the given cells and fires a mxEvent.RESIZE_CELLS event while the transaction is in progress.
mxGraph.prototype.resizeChildCells = function(cell,
newGeo)
Resizes the child cells of the given cell for the given new geometry with respect to the current geometry of the cell.
mxGraph.prototype.resizeContainer
Specifies if the container should be resized to the graph size when the graph size has changed.
mxSwimlaneManager.prototype.resizeEnabled
Specifies if resizing of swimlanes should be handled.
mxSpaceManager.prototype.resizeHandler
Holds the function that handles the move event.
Boolean specifying if the height should be updated.
mxStackLayout.prototype.resizeLast
If the last element should be resized to fill out the parent.
mxCompactTreeLayout.prototype.resizeParent
If the parents should be resized to match the width/height of the children.
mxHierarchicalLayout.prototype.resizeParent
Specifies if the parent should be resized after the layout so that it contains all the child cells.
mxStackLayout.prototype.resizeParent
If the parent should be resized to match the width/height of the stack.
mxSwimlaneLayout.prototype.resizeParent
Specifies if the parent should be resized after the layout so that it contains all the child cells.
mxSwimlaneManager.prototype.resizeSwimlane = function(swimlane,
w,
h,
parentHorizontal)
Called from cellsResized for all swimlanes that are not ignored to update the size of the siblings and the size of the parent swimlanes, recursively, if bubbling is true.
mxPartitionLayout.prototype.resizeVertices
Boolean that specifies if vertices should be resized.
Boolean specifying if the width should be updated.
resolve: function(root,
path)
Returns the cell for the specified cell path using the given root as the root of the path.
mxCellRenderer.prototype.resolveColor = function(state,
field,
key)
Resolves special keywords ‘inherit’, ‘indicated’ and ‘swimlane’ and sets the respective color on the shape.
Associative array that maps from keys to values.
Specifies whether or not values in resource files are encoded with \u or percentage.
mxAbstractCanvas2D.prototype.restore = function()
Restores the current state.
mxXmlCanvas2D.prototype.restore = function()
Restores the drawing state.
mxGraphModel.prototype.restoreClone = function(clone,
cell,
mapping)
Inner helper method for restoring the connections in a network of cloned cells.
Specifies the event name for suspend.
mxGraphView.prototype.revalidate = function()
Revalidates the complete view with all cell states.
mxCellStatePreview.prototype.revalidateState = function(state,
dx,
dy,
visitor)
mxObjectCodec.prototype.reverse
Maps from from XML attribute names to fieldnames.
reversePortConstraints: function(constraint)
Reverse the port constraint bitmask.
RhombusPerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a rhombus (aka diamond) perimeter.
mxCompactTreeLayout.prototype.root
The cell to use as the root of the tree
mxGraphModel.prototype.root
Holds the root cell, which in turn contains the cells that represent the layers of the diagram as child cells.
this.root
Reference to the container for the SVG content.
this.root
Reference to the container for the SVG content.
this.root
Reference to the container for the SVG content.
Fires when the current root has changed, or when the title of the current root has changed.
Specifies the event name for root.
Fires if the root in the model has changed.
mxGraphModel.prototype.rootChanged = function(root)
Inner callback to change the root of the model and update the internal datastructures, such as cells and nextId.
mxGraphHierarchyModel.prototype.roots
Store of roots of this hierarchy model, these are real graph cells, not internal cells
mxHierarchicalLayout.prototype.roots
Holds the array of mxCell that this layout contains.
mxSwimlaneLayout.prototype.roots
Holds the array of mxCell that this layout contains.
mxSwimlaneModel.prototype.roots
Store of roots of this hierarchy model, these are real graph cells, not internal cells
mxRadialTreeLayout.prototype.rootx
The X co-ordinate of the root cell
mxRadialTreeLayout.prototype.rooty
The Y co-ordinate of the root cell
mxGeometry.prototype.rotate = function(angle,
cx)
Rotates the geometry by the given angle around the given center.
mxSvgCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxVmlCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Sets the rotation of the canvas.
mxXmlCanvas2D.prototype.rotate = function(theta,
flipH,
flipV,
cx,
cy)
Rotates and/or flips the output around a given center.
mxRectangle.prototype.rotate90 = function()
Rotates this rectangle by 90 degree around its center point.
Rotates the given cell to the given rotation.
mxVmlCanvas2D.prototype.rotatedHtmlBackground
Background color for rotated HTML.
mxAbstractCanvas2D.prototype.rotateHtml
Switch for rotation of HTML.
mxCellRenderer.prototype.rotateLabelBounds = function(state,
bounds)
Adds the shape rotation to the given label bounds and applies the alignment and offsets.
mxAbstractCanvas2D.prototype.rotatePoint = function(x,
y,
theta,
cx,
cy)
Rotates the given point and returns the result as an mxPoint.
mxHandle.prototype.rotatePoint = function(pt,
alpha)
Rotates the point by the given angle.
Index for the rotation handle in an mxMouseEvent.
mxVertexHandler.prototype.rotationCursor
Specifies the cursor for the rotation handle.
mxGraphHandler.prototype.rotationEnabled
Specifies if the bounding box should allow for rotation.
mxVertexHandler.prototype.rotationEnabled
Specifies if a rotation handle should be visible.
mxVertexHandler.prototype.rotationHandleVSpacing
Vertical spacing for rotation icon.
mxVertexHandler.prototype.rotationRaster
Specifies if rotation steps should be “rasterized” depening on the distance to the handle.
mxVertexHandler.prototype.roundAngle = function(angle)
Hook for rounding the angle.
mxEdgeHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled width or height.
mxGraphHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled vector.
mxVertexHandler.prototype.roundLength = function(length)
Hook for rounding the unscaled width or height.
mxSvgCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Sets the current path to a rounded rectangle.
mxXmlCanvas2D.prototype.roundrect = function(x,
y,
w,
h,
dx,
dy)
Puts a rounded rectangle into the drawing buffer.
mxParallelEdgeLayout.prototype.route = function(edge,
x,
y)
Routes the given edge via the given point.
mxRadialTreeLayout.prototype.row
Array of vertices on each row
mxRadialTreeLayout.prototype.rowMaxCenX
Array of x coordinate of rightmost vertex of each row
mxRadialTreeLayout.prototype.rowMaxX
Array of rightmost x coordinate of each row
mxRadialTreeLayout.prototype.rowMinCenX
Array of x coordinate of leftmost vertex of each row
mxRadialTreeLayout.prototype.rowMinX
Array of leftmost x coordinate of each row
mxRadialTreeLayout.prototype.rowRadi
Array of y deltas of each row behind root vertex, also the radius in the tree
rtrim: function(str,
chars)
Strips all whitespaces from the end of the string.
mxHierarchicalLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
mxSwimlaneLayout.prototype.run = function(parent)
The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General16.html b/docs/js-api/index/General16.html index 47a4ef1a0..5ff424cb2 100644 --- a/docs/js-api/index/General16.html +++ b/docs/js-api/index/General16.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 save
 SAVE
 scale
 SCALE
 SCALE_AND_TRANSLATE
 scaleAndTranslate, mxGraphView
 scaleCell, mxGraph
 scaleGrid, mxGraphHandler
 screenX, mxPopupMenuHandler
 screenY, mxPopupMenuHandler
 scrollCellToVisible, mxGraph
 scrollOnMove, mxGraphHandler
 scrollPointToVisible, mxGraph
 scrollRectToVisible, mxGraph
 SegmentConnector, mxEdgeStyle
 segments, mxCellState
 select, mxConnectionHandler
 SELECT
 selectAll, mxGraph
 selectCell, mxGraph
 selectCellForEvent, mxGraph
 selectCells
 selectCellsForEvent, mxGraph
 selectChildCell, mxGraph
 selectDelayed, mxGraphHandler
 selectEnabled, mxGraphHandler
 Selection, mxGraph
 Selection state, mxGraph
 SELECTION_DASHED, mxConstants
 selectionModel, mxGraph
 selectMode, mxToolbar
 selectNextCell, mxGraph
 selectOnPopup, mxPopupMenuHandler
 selectParentCell, mxGraph
 selectPreviousCell, mxGraph
 selectRegion, mxGraph
 selectText, mxCellEditor
 selectVertices, mxGraph
 send, mxXmlRequest
 setAbsoluteTerminalPoint, mxCellState
 setAddEnabled, mxSwimlaneManager
 setAllowDanglingEdges, mxGraph
 setAllowEval, mxGraphView
 setAllowLoops, mxGraph
 setAlpha
 setAttribute
 setAutoSizeCells, mxGraph
 setBackgroundImage, mxGraph
 setBaseDomain, mxUrlConverter
 setBaseUrl, mxUrlConverter
 setBinary, mxXmlRequest
 setBorder, mxGraph
 setBubbling, mxLayoutManager
 setCell, mxGraphSelectionModel
 setCellHeights, mxCompactTreeLayout
 setCellLocations, mxCoordinateAssignment
 setCells
 setCellsBendable, mxGraph
 setCellsCloneable, mxGraph
 setCellsDeletable, mxGraph
 setCellsDisconnectable, mxGraph
 setCellsEditable, mxGraph
 setCellsMovable, mxGraph
 setCellsResizable, mxGraph
 setCellsSelectable, mxGraph
 setCellStyle, mxGraph
 setCellStyleFlags
 setCellStyles
 setCellWarning, mxGraph
 setCloneEnabled, mxGraphHandler
 setCloneInvalidEdges, mxGraph
 setClosable, mxWindow
 setCollapsed
 setConnectable
 setConnectableEdges, mxGraph
 setConnectionConstraint, mxGraph
 setConstrainChildren, mxGraph
 setConstrainChildrenOnResize, mxGraph
 setCreateIds, mxGraphModel
 setCreateTarget, mxConnectionHandler
 setCurrentRoot, mxGraphView
 setCurrentState, mxCellMarker
 setCursor
 setDashed
 setDashPattern
 setDefaultParent, mxGraph
 setDisconnectOnMove, mxGraph
 setDropEnabled, mxGraph
 setEdge, mxCell
 setEdgePoints, mxGraphLayout
 setEdgePosition, mxCoordinateAssignment
 setEdgeStyleEnabled, mxGraphLayout
 setEnabled
 setEnterStopsCellEditing, mxGraph
 setEscapeEnabled, mxGraph
 setEventsEnabled, mxEventSource
 setEventSource, mxEventSource
 setExtendParents, mxGraph
 setExtendParentsOnAdd, mxGraph
 setFillColor
 setFontBackgroundColor, mxXmlCanvas2D
 setFontBorderColor, mxXmlCanvas2D
 setFontColor
 setFontFamily
 setFontSize
 setFontStyle
 setGeneralPurposeVariable
 setGeometry
 setGradient
 setGraph
 setGraphBounds, mxGraphView
 setGraphContainer, mxEditor
 setGridEnabled
 setGridSize, mxGraph
 setGuidesEnabled, mxDragSource
 setHideOnHover, mxTooltipHandler
 setHighlightColor
 setHorizontal, mxSwimlaneManager
 setHotspot, mxCellMarker
 setHotspotEnabled, mxCellMarker
 setHtmlLabels, mxGraph
 setId, mxCell
 setImage, mxWindow
 setInnerHtml, mxText
 setInvokesStopCellEditing, mxGraph
 setLineCap
 setLineJoin
 setLink
 setLocation, mxWindow
 setLocked, mxGraph
 setMaximizable, mxWindow
 setMinimizable, mxWindow
 setMiterLimit
 setMode, mxEditor
 setModified
 setMoveEnabled, mxGraphHandler
 setMultigraph, mxGraph
 setOpacity, mxUtils
 setOrthogonalEdge, mxGraphLayout
 setPanning, mxGraph
 setPanningEnabled, mxPanningHandler
 setParent, mxCell
 setPinchEnabled, mxPanningHandler
 setPortsEnabled, mxGraph
 setPosition, mxVertexHandler
 setPrefixedStyle, mxUtils
 setPreviewColor, mxEdgeHandler
 setRect, mxRectangle
 setRecursiveResize, mxGraph
 setRemoveCellsFromParent, mxGraphHandler
 setRendering, mxGraphView
 setRequestHeaders, mxXmlRequest
 setResizable, mxWindow
 setResizeContainer, mxGraph
 setResizeEnabled, mxSwimlaneManager
 setRoot, mxGraphModel
 setScale, mxGraphView
 setScrollable, mxWindow
 setSelectEnabled, mxGraphHandler
 setSelectionCell, mxGraph
 setSelectionCells, mxGraph
 setSelectionModel, mxGraph
 setShadow
 setShadowAlpha
 setShadowColor
 setShadowOffset
 setShiftDownwards, mxSpaceManager
 setShiftRightwards, mxSpaceManager
 setSingleSelection, mxGraphSelectionModel
 setSize, mxWindow
 setSplitEnabled, mxGraph
 setStates
 setStatus, mxEditor
 setStatusContainer, mxEditor
 setStrokeColor
 setStrokeWidth
 setStyle
 setStyleFlag, mxUtils
 setStylesheet, mxGraph
 setSwimlaneNesting, mxGraph
 setSwimlaneSelectionEnabled, mxGraph
 setTerminal
 setTerminalPoint, mxGeometry
 setTerminals, mxGraphModel
 setTextContent, mxUtils
 setTitle, mxWindow
 setTitleContainer, mxEditor
 setTolerance, mxGraph
 setToolbarContainer, mxEditor
 setTooltips, mxGraph
 setTranslate, mxGraphView
 setTransparentBackgroundImage, mxShape
 setValue
 setVertex, mxCell
 setVertexLabelsMovable, mxGraph
 setVertexLocation
 setVisible
 setVisibleTerminalState, mxCellState
 setX, mxGraphAbstractHierarchyCell
 setY, mxGraphAbstractHierarchyCell
 setZoomEnabled, mxOutline
 SHADOW_OFFSET_X, mxConstants
 SHADOW_OFFSET_Y, mxConstants
 SHADOW_OPACITY, mxConstants
 SHADOWCOLOR, mxConstants
 shape
 SHAPE_ACTOR, mxConstants
 SHAPE_ARROW, mxConstants
 SHAPE_CLOUD, mxConstants
 SHAPE_CONNECTOR, mxConstants
 SHAPE_CYLINDER, mxConstants
 SHAPE_DOUBLE_ELLIPSE, mxConstants
 SHAPE_ELLIPSE, mxConstants
 SHAPE_HEXAGON, mxConstants
 SHAPE_IMAGE, mxConstants
 SHAPE_LABEL, mxConstants
 SHAPE_LINE, mxConstants
 SHAPE_RECTANGLE, mxConstants
 SHAPE_RHOMBUS, mxConstants
 SHAPE_SWIMLANE, mxConstants
 SHAPE_TRIANGLE, mxConstants
 shapePointerEvents, mxShape
 sharedDiv, mxRubberband
 shiftCell, mxSpaceManager
 shiftDownwards, mxSpaceManager
 shiftKeys, mxKeyHandler
 shiftRightwards, mxSpaceManager
 shouldRemoveCellsFromParent, mxGraphHandler
 show
 SHOW
 showHelp, mxEditor
 showMenu, mxPopupMenu
 showOutline, mxEditor
 showProperties, mxEditor
 showSubmenu, mxPopupMenu
 showTasks, mxEditor
 showViewport, mxOutline
 SideToSide, mxEdgeStyle
 significant, mxUndoableEdit
 simulate, mxXmlRequest
 singleSelection, mxGraphSelectionModel
 singleSizer, mxVertexHandler
 size, mxUndoManager
 SIZE
 sizeDidChange, mxGraph
 sizerImage, mxOutline
 smartSeparators, mxPopupMenu
 snap
 snapPoint, mxVertexHandler
 snapToTerminals, mxEdgeHandler
 sortCells, mxUtils
 sortEdges
 sortOutgoingEdges, mxCompactTreeLayout
 source
 sourcePoint, mxGeometry
 SOURCESCANSTARTRANK
 spacing
 SPLIT_EDGE
 splitEdge, mxGraph
 splitEnabled, mxGraph
 src, mxImage
 start
 START
 START_EDIT
 START_EDITING
 startAnimation, mxAnimation
 startDrag, mxDragSource
 startEditing
 startEditingAtCell, mxGraph
 startX, mxPanningHandler
 startY, mxPanningHandler
 state
 states
 stateValidated, mxGraphView
 status, mxEditor
 stencil, mxShape
 stencilPointerEvents, mxShape
 step, mxMorphing
 steps, mxMorphing
 STEPSIZE, mxClipboard
 stopAnimation, mxAnimation
 stopDrag, mxDragSource
 stopEditing
 stopRecursion, mxMorphing
 stroke
 strokeTolerance, mxSvgCanvas2D
 strokewidth, mxStencil
 style
 STYLE_ALIGN, mxConstants
 STYLE_ARCSIZE, mxConstants
 STYLE_ASPECT, mxConstants
 STYLE_AUTOSIZE, mxConstants
 STYLE_BENDABLE, mxConstants
 STYLE_CLONEABLE, mxConstants
 STYLE_CURVED, mxConstants
 STYLE_DASHED, mxConstants
 STYLE_DELETABLE, mxConstants
 STYLE_DIRECTION, mxConstants
 STYLE_EDGE, mxConstants
 STYLE_EDITABLE, mxConstants
 STYLE_ELBOW, mxConstants
 STYLE_ENDARROW, mxConstants
 STYLE_ENDFILL, mxConstants
 STYLE_ENDSIZE, mxConstants
 STYLE_ENTRY_PERIMETER, mxConstants
 STYLE_ENTRY_X, mxConstants
 STYLE_ENTRY_Y, mxConstants
 STYLE_EXIT_PERIMETER, mxConstants
 STYLE_EXIT_X, mxConstants
 STYLE_EXIT_Y, mxConstants
 STYLE_FILLCOLOR, mxConstants
 STYLE_FLIPH, mxConstants
 STYLE_FLIPV, mxConstants
 STYLE_FOLDABLE, mxConstants
 STYLE_FONTCOLOR, mxConstants
 STYLE_FONTFAMILY, mxConstants
 STYLE_FONTSIZE, mxConstants
 STYLE_FONTSTYLE, mxConstants
 STYLE_GLASS, mxConstants
 STYLE_GRADIENT_DIRECTION, mxConstants
 STYLE_GRADIENTCOLOR, mxConstants
 STYLE_HORIZONTAL, mxConstants
 STYLE_IMAGE, mxConstants
 STYLE_IMAGE_ALIGN, mxConstants
 STYLE_IMAGE_ASPECT, mxConstants
 STYLE_IMAGE_BACKGROUND, mxConstants
 STYLE_IMAGE_BORDER, mxConstants
 STYLE_IMAGE_HEIGHT, mxConstants
 STYLE_IMAGE_VERTICAL_ALIGN, mxConstants
 STYLE_IMAGE_WIDTH, mxConstants
 STYLE_INDICATOR_COLOR, mxConstants
 STYLE_INDICATOR_DIRECTION, mxConstants
 STYLE_INDICATOR_GRADIENTCOLOR, mxConstants
 STYLE_INDICATOR_HEIGHT, mxConstants
 STYLE_INDICATOR_IMAGE, mxConstants
 STYLE_INDICATOR_SHAPE, mxConstants
 STYLE_INDICATOR_SPACING, mxConstants
 STYLE_INDICATOR_STROKECOLOR, mxConstants
 STYLE_INDICATOR_WIDTH, mxConstants
 STYLE_LABEL_BACKGROUNDCOLOR, mxConstants
 STYLE_LABEL_BORDERCOLOR, mxConstants
 STYLE_LABEL_PADDING, mxConstants
 STYLE_LABEL_POSITION, mxConstants
 STYLE_LABEL_WIDTH, mxConstants
 STYLE_LOOP, mxConstants
 STYLE_MARGIN, mxConstants
 STYLE_MOVABLE, mxConstants
 STYLE_NOEDGESTYLE, mxConstants
 STYLE_NOLABEL, mxConstants
 STYLE_OPACITY, mxConstants
 STYLE_ORTHOGONAL, mxConstants
 STYLE_OVERFLOW, mxConstants
 STYLE_PERIMETER, mxConstants
 STYLE_PERIMETER_SPACING, mxConstants
 STYLE_PORT_CONSTRAINT, mxConstants
 STYLE_PORT_CONSTRAINT_ROTATION, mxConstants
 STYLE_RESIZABLE, mxConstants
 STYLE_ROTATABLE, mxConstants
 STYLE_ROTATION, mxConstants
 STYLE_ROUNDED, mxConstants
 STYLE_ROUTING_CENTER_X, mxConstants
 STYLE_ROUTING_CENTER_Y, mxConstants
 STYLE_SEGMENT, mxConstants
 STYLE_SEPARATORCOLOR, mxConstants
 STYLE_SHADOW, mxConstants
 STYLE_SHAPE, mxConstants
 STYLE_SMOOTH, mxConstants
 STYLE_SOURCE_PERIMETER_SPACING, mxConstants
 STYLE_SOURCE_PORT, mxConstants
 STYLE_SPACING, mxConstants
 STYLE_SPACING_BOTTOM, mxConstants
 STYLE_SPACING_LEFT, mxConstants
 STYLE_SPACING_RIGHT, mxConstants
 STYLE_SPACING_TOP, mxConstants
 STYLE_STARTARROW, mxConstants
 STYLE_STARTFILL, mxConstants
 STYLE_STARTSIZE, mxConstants
 STYLE_STROKECOLOR, mxConstants
 STYLE_STROKEWIDTH, mxConstants
 STYLE_SWIMLANE_FILLCOLOR, mxConstants
 STYLE_SWIMLANE_LINE, mxConstants
 STYLE_TARGET_PERIMETER_SPACING, mxConstants
 STYLE_TARGET_PORT, mxConstants
 STYLE_TEXT_OPACITY, mxConstants
 STYLE_VERTICAL_ALIGN, mxConstants
 STYLE_VERTICAL_LABEL_POSITION, mxConstants
 STYLE_WHITE_SPACE, mxConstants
 styleEnabled, mxSvgCanvas2D
 styleForCellChanged, mxGraphModel
 styles, mxStylesheet
 stylesheet, mxGraph
 submenuImage, mxPopupMenu
 submit, mxUtils
 SUSPEND, mxEvent
 suspended, mxOutline
 svgPointerEvents, mxShape
 svgStrokeTolerance
 swap, mxGeometry
 swapBounds, mxGraph
 swapStyles, mxEditor
 swimlaneAdded, mxSwimlaneManager
 swimlaneIndicatorColorAttribute, mxGraph
 swimlaneNesting, mxGraph
 swimlaneRequired, mxEditor
 swimlanes, mxSwimlaneLayout
 swimlaneSelectionEnabled, mxGraph
 swimlaneSpacing, mxEditor
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 save
 SAVE
 scale
 SCALE
 SCALE_AND_TRANSLATE
 scaleAndTranslate, mxGraphView
 scaleCell, mxGraph
 scaleGrid, mxGraphHandler
 screenX, mxPopupMenuHandler
 screenY, mxPopupMenuHandler
 scrollCellToVisible, mxGraph
 scrollOnMove, mxGraphHandler
 scrollPointToVisible, mxGraph
 scrollRectToVisible, mxGraph
 SegmentConnector, mxEdgeStyle
 segments, mxCellState
 select, mxConnectionHandler
 SELECT
 selectAll, mxGraph
 selectCell, mxGraph
 selectCellForEvent, mxGraph
 selectCells
 selectCellsForEvent, mxGraph
 selectChildCell, mxGraph
 selectDelayed, mxGraphHandler
 selectEnabled, mxGraphHandler
 Selection, mxGraph
 Selection state, mxGraph
 SELECTION_DASHED, mxConstants
 selectionModel, mxGraph
 selectMode, mxToolbar
 selectNextCell, mxGraph
 selectOnPopup, mxPopupMenuHandler
 selectParentCell, mxGraph
 selectPreviousCell, mxGraph
 selectRegion, mxGraph
 selectText, mxCellEditor
 selectVertices, mxGraph
 send, mxXmlRequest
 setAbsoluteTerminalPoint, mxCellState
 setAddEnabled, mxSwimlaneManager
 setAllowDanglingEdges, mxGraph
 setAllowEval, mxGraphView
 setAllowLoops, mxGraph
 setAlpha
 setAttribute
 setAutoSizeCells, mxGraph
 setBackgroundImage, mxGraph
 setBaseDomain, mxUrlConverter
 setBaseUrl, mxUrlConverter
 setBinary, mxXmlRequest
 setBorder, mxGraph
 setBubbling, mxLayoutManager
 setCell, mxGraphSelectionModel
 setCellHeights, mxCompactTreeLayout
 setCellLocations, mxCoordinateAssignment
 setCells
 setCellsBendable, mxGraph
 setCellsCloneable, mxGraph
 setCellsDeletable, mxGraph
 setCellsDisconnectable, mxGraph
 setCellsEditable, mxGraph
 setCellsMovable, mxGraph
 setCellsResizable, mxGraph
 setCellsSelectable, mxGraph
 setCellStyle, mxGraph
 setCellStyleFlags
 setCellStyles
 setCellWarning, mxGraph
 setCloneEnabled, mxGraphHandler
 setCloneInvalidEdges, mxGraph
 setClosable, mxWindow
 setCollapsed
 setConnectable
 setConnectableEdges, mxGraph
 setConnectionConstraint, mxGraph
 setConstrainChildren, mxGraph
 setConstrainChildrenOnResize, mxGraph
 setCreateIds, mxGraphModel
 setCreateTarget, mxConnectionHandler
 setCurrentRoot, mxGraphView
 setCurrentState, mxCellMarker
 setCursor
 setDashed
 setDashPattern
 setDefaultParent, mxGraph
 setDisconnectOnMove, mxGraph
 setDropEnabled, mxGraph
 setEdge, mxCell
 setEdgePoints, mxGraphLayout
 setEdgePosition, mxCoordinateAssignment
 setEdgeStyleEnabled, mxGraphLayout
 setEnabled
 setEnterStopsCellEditing, mxGraph
 setEscapeEnabled, mxGraph
 setEventsEnabled, mxEventSource
 setEventSource, mxEventSource
 setExtendParents, mxGraph
 setExtendParentsOnAdd, mxGraph
 setFillColor
 setFontBackgroundColor, mxXmlCanvas2D
 setFontBorderColor, mxXmlCanvas2D
 setFontColor
 setFontFamily
 setFontSize
 setFontStyle
 setGeneralPurposeVariable
 setGeometry
 setGradient
 setGraph
 setGraphBounds, mxGraphView
 setGraphContainer, mxEditor
 setGridEnabled
 setGridSize, mxGraph
 setGuidesEnabled, mxDragSource
 setHideOnHover, mxTooltipHandler
 setHighlightColor
 setHorizontal, mxSwimlaneManager
 setHotspot, mxCellMarker
 setHotspotEnabled, mxCellMarker
 setHtmlLabels, mxGraph
 setId, mxCell
 setImage, mxWindow
 setInnerHtml, mxText
 setInvokesStopCellEditing, mxGraph
 setLineCap
 setLineJoin
 setLink
 setLocation, mxWindow
 setLocked, mxGraph
 setMaximizable, mxWindow
 setMinimizable, mxWindow
 setMiterLimit
 setMode, mxEditor
 setModified
 setMoveEnabled, mxGraphHandler
 setMultigraph, mxGraph
 setOpacity, mxUtils
 setOrthogonalEdge, mxGraphLayout
 setPanning, mxGraph
 setPanningEnabled, mxPanningHandler
 setParent, mxCell
 setPinchEnabled, mxPanningHandler
 setPortsEnabled, mxGraph
 setPosition, mxVertexHandler
 setPrefixedStyle, mxUtils
 setPreviewColor, mxEdgeHandler
 setRect, mxRectangle
 setRecursiveResize, mxGraph
 setRemoveCellsFromParent, mxGraphHandler
 setRendering, mxGraphView
 setRequestHeaders, mxXmlRequest
 setResizable, mxWindow
 setResizeContainer, mxGraph
 setResizeEnabled, mxSwimlaneManager
 setRoot, mxGraphModel
 setScale, mxGraphView
 setScrollable, mxWindow
 setSelectEnabled, mxGraphHandler
 setSelectionCell, mxGraph
 setSelectionCells, mxGraph
 setSelectionModel, mxGraph
 setShadow
 setShadowAlpha
 setShadowColor
 setShadowOffset
 setShiftDownwards, mxSpaceManager
 setShiftRightwards, mxSpaceManager
 setSingleSelection, mxGraphSelectionModel
 setSize, mxWindow
 setSplitEnabled, mxGraph
 setStates
 setStatus, mxEditor
 setStatusContainer, mxEditor
 setStrokeColor
 setStrokeWidth
 setStyle
 setStyleFlag, mxUtils
 setStylesheet, mxGraph
 setSwimlaneNesting, mxGraph
 setSwimlaneSelectionEnabled, mxGraph
 setTerminal
 setTerminalPoint, mxGeometry
 setTerminals, mxGraphModel
 setTextContent, mxUtils
 setTitle, mxWindow
 setTitleContainer, mxEditor
 setTolerance, mxGraph
 setToolbarContainer, mxEditor
 setTooltips, mxGraph
 setTranslate, mxGraphView
 setTransparentBackgroundImage, mxShape
 setValue
 setVertex, mxCell
 setVertexLabelsMovable, mxGraph
 setVertexLocation
 setVisible
 setVisibleTerminalState, mxCellState
 setX, mxGraphAbstractHierarchyCell
 setY, mxGraphAbstractHierarchyCell
 setZoomEnabled, mxOutline
 SHADOW_OFFSET_X, mxConstants
 SHADOW_OFFSET_Y, mxConstants
 SHADOW_OPACITY, mxConstants
 SHADOWCOLOR, mxConstants
 shape
 SHAPE_ACTOR, mxConstants
 SHAPE_ARROW, mxConstants
 SHAPE_CLOUD, mxConstants
 SHAPE_CONNECTOR, mxConstants
 SHAPE_CYLINDER, mxConstants
 SHAPE_DOUBLE_ELLIPSE, mxConstants
 SHAPE_ELLIPSE, mxConstants
 SHAPE_HEXAGON, mxConstants
 SHAPE_IMAGE, mxConstants
 SHAPE_LABEL, mxConstants
 SHAPE_LINE, mxConstants
 SHAPE_RECTANGLE, mxConstants
 SHAPE_RHOMBUS, mxConstants
 SHAPE_SWIMLANE, mxConstants
 SHAPE_TRIANGLE, mxConstants
 shapePointerEvents, mxShape
 sharedDiv, mxRubberband
 shiftCell, mxSpaceManager
 shiftDownwards, mxSpaceManager
 shiftKeys, mxKeyHandler
 shiftRightwards, mxSpaceManager
 shouldRemoveCellsFromParent, mxGraphHandler
 show
 SHOW
 showHelp, mxEditor
 showMenu, mxPopupMenu
 showOutline, mxEditor
 showProperties, mxEditor
 showSubmenu, mxPopupMenu
 showTasks, mxEditor
 showViewport, mxOutline
 SideToSide, mxEdgeStyle
 significant, mxUndoableEdit
 simulate, mxXmlRequest
 singleSelection, mxGraphSelectionModel
 singleSizer, mxVertexHandler
 size, mxUndoManager
 SIZE
 sizeDidChange, mxGraph
 sizerImage, mxOutline
 smartSeparators, mxPopupMenu
 snap
 snapPoint, mxVertexHandler
 snapToTerminals, mxEdgeHandler
 sortCells, mxUtils
 sortEdges
 sortOutgoingEdges, mxCompactTreeLayout
 source
 sourcePoint, mxGeometry
 SOURCESCANSTARTRANK
 spacing
 SPLIT_EDGE
 splitEdge, mxGraph
 splitEnabled, mxGraph
 src, mxImage
 start
 START
 START_EDIT
 START_EDITING
 startAnimation, mxAnimation
 startDrag, mxDragSource
 startEditing
 startEditingAtCell, mxGraph
 startX, mxPanningHandler
 startY, mxPanningHandler
 state
 states
 stateValidated, mxGraphView
 status, mxEditor
 stencil, mxShape
 stencilPointerEvents, mxShape
 step, mxMorphing
 steps, mxMorphing
 STEPSIZE, mxClipboard
 stopAnimation, mxAnimation
 stopDrag, mxDragSource
 stopEditing
 stopRecursion, mxMorphing
 stroke
 strokeTolerance, mxSvgCanvas2D
 strokewidth, mxStencil
 style
 STYLE_ALIGN, mxConstants
 STYLE_ARCSIZE, mxConstants
 STYLE_ASPECT, mxConstants
 STYLE_AUTOSIZE, mxConstants
 STYLE_BENDABLE, mxConstants
 STYLE_CLONEABLE, mxConstants
 STYLE_CURVED, mxConstants
 STYLE_DASHED, mxConstants
 STYLE_DELETABLE, mxConstants
 STYLE_DIRECTION, mxConstants
 STYLE_EDGE, mxConstants
 STYLE_EDITABLE, mxConstants
 STYLE_ELBOW, mxConstants
 STYLE_ENDARROW, mxConstants
 STYLE_ENDFILL, mxConstants
 STYLE_ENDSIZE, mxConstants
 STYLE_ENTRY_PERIMETER, mxConstants
 STYLE_ENTRY_X, mxConstants
 STYLE_ENTRY_Y, mxConstants
 STYLE_EXIT_PERIMETER, mxConstants
 STYLE_EXIT_X, mxConstants
 STYLE_EXIT_Y, mxConstants
 STYLE_FILLCOLOR, mxConstants
 STYLE_FLIPH, mxConstants
 STYLE_FLIPV, mxConstants
 STYLE_FOLDABLE, mxConstants
 STYLE_FONTCOLOR, mxConstants
 STYLE_FONTFAMILY, mxConstants
 STYLE_FONTSIZE, mxConstants
 STYLE_FONTSTYLE, mxConstants
 STYLE_GLASS, mxConstants
 STYLE_GRADIENT_DIRECTION, mxConstants
 STYLE_GRADIENTCOLOR, mxConstants
 STYLE_HORIZONTAL, mxConstants
 STYLE_IMAGE, mxConstants
 STYLE_IMAGE_ALIGN, mxConstants
 STYLE_IMAGE_ASPECT, mxConstants
 STYLE_IMAGE_BACKGROUND, mxConstants
 STYLE_IMAGE_BORDER, mxConstants
 STYLE_IMAGE_HEIGHT, mxConstants
 STYLE_IMAGE_VERTICAL_ALIGN, mxConstants
 STYLE_IMAGE_WIDTH, mxConstants
 STYLE_INDICATOR_COLOR, mxConstants
 STYLE_INDICATOR_DIRECTION, mxConstants
 STYLE_INDICATOR_GRADIENTCOLOR, mxConstants
 STYLE_INDICATOR_HEIGHT, mxConstants
 STYLE_INDICATOR_IMAGE, mxConstants
 STYLE_INDICATOR_SHAPE, mxConstants
 STYLE_INDICATOR_SPACING, mxConstants
 STYLE_INDICATOR_STROKECOLOR, mxConstants
 STYLE_INDICATOR_WIDTH, mxConstants
 STYLE_LABEL_BACKGROUNDCOLOR, mxConstants
 STYLE_LABEL_BORDERCOLOR, mxConstants
 STYLE_LABEL_PADDING, mxConstants
 STYLE_LABEL_POSITION, mxConstants
 STYLE_LABEL_WIDTH, mxConstants
 STYLE_LOOP, mxConstants
 STYLE_MARGIN, mxConstants
 STYLE_MOVABLE, mxConstants
 STYLE_NOEDGESTYLE, mxConstants
 STYLE_NOLABEL, mxConstants
 STYLE_OPACITY, mxConstants
 STYLE_ORTHOGONAL, mxConstants
 STYLE_OVERFLOW, mxConstants
 STYLE_PERIMETER, mxConstants
 STYLE_PERIMETER_SPACING, mxConstants
 STYLE_PORT_CONSTRAINT, mxConstants
 STYLE_PORT_CONSTRAINT_ROTATION, mxConstants
 STYLE_RESIZABLE, mxConstants
 STYLE_ROTATABLE, mxConstants
 STYLE_ROTATION, mxConstants
 STYLE_ROUNDED, mxConstants
 STYLE_ROUTING_CENTER_X, mxConstants
 STYLE_ROUTING_CENTER_Y, mxConstants
 STYLE_SEGMENT, mxConstants
 STYLE_SEPARATORCOLOR, mxConstants
 STYLE_SHADOW, mxConstants
 STYLE_SHAPE, mxConstants
 STYLE_SMOOTH, mxConstants
 STYLE_SOURCE_PERIMETER_SPACING, mxConstants
 STYLE_SOURCE_PORT, mxConstants
 STYLE_SPACING, mxConstants
 STYLE_SPACING_BOTTOM, mxConstants
 STYLE_SPACING_LEFT, mxConstants
 STYLE_SPACING_RIGHT, mxConstants
 STYLE_SPACING_TOP, mxConstants
 STYLE_STARTARROW, mxConstants
 STYLE_STARTFILL, mxConstants
 STYLE_STARTSIZE, mxConstants
 STYLE_STROKECOLOR, mxConstants
 STYLE_STROKEWIDTH, mxConstants
 STYLE_SWIMLANE_FILLCOLOR, mxConstants
 STYLE_SWIMLANE_LINE, mxConstants
 STYLE_TARGET_PERIMETER_SPACING, mxConstants
 STYLE_TARGET_PORT, mxConstants
 STYLE_TEXT_OPACITY, mxConstants
 STYLE_VERTICAL_ALIGN, mxConstants
 STYLE_VERTICAL_LABEL_POSITION, mxConstants
 STYLE_WHITE_SPACE, mxConstants
 styleEnabled, mxSvgCanvas2D
 styleForCellChanged, mxGraphModel
 styles, mxStylesheet
 stylesheet, mxGraph
 submenuImage, mxPopupMenu
 submit, mxUtils
 SUSPEND, mxEvent
 suspended, mxOutline
 svgPointerEvents, mxShape
 svgStrokeTolerance
 swap, mxGeometry
 swapBounds, mxGraph
 swapStyles, mxEditor
 swimlaneAdded, mxSwimlaneManager
 swimlaneIndicatorColorAttribute, mxGraph
 swimlaneNesting, mxGraph
 swimlaneRequired, mxEditor
 swimlanes, mxSwimlaneLayout
 swimlaneSelectionEnabled, mxGraph
 swimlaneSpacing, mxEditor
-
mxAbstractCanvas2D.prototype.save = function()
Saves the current state.
mxAutoSaveManager.prototype.save = function()
Empty hook that is called if the graph should be saved.
mxEditor.prototype.save = function (url,
linefeed)
Posts the string returned by writeGraphModel to the given URL or the URL returned by getUrlPost.
mxXmlCanvas2D.prototype.save = function()
Saves the drawing state.
Fires after the current file was saved in save.
Specifies the event name for open.
mxAbstractCanvas2D.prototype.scale = function(value)
Scales the current state.
mxGeometry.prototype.scale = function(sx,
sy,
fixedAspect)
Scales the geometry by the given amount.
mxGraphView.prototype.scale
Specifies the scale.
mxPrintPreview.prototype.scale
Holds the scale of the print preview.
mxShape.prototype.scale
Holds the scale in which the shape is being painted.
mxXmlCanvas2D.prototype.scale = function(value)
Scales the output.
Specifies the event name for scale.
Fires after the scale was changed in setScale.
Specifies the event name for scaleAndTranslate.
Fires after the scale and translate have been changed in scaleAndTranslate.
mxGraphView.prototype.scaleAndTranslate = function(scale,
dx,
dy)
Sets the scale and translation and fires a scale and translate event before calling revalidate followed by mxGraph.sizeDidChange.
mxGraph.prototype.scaleCell = function(cell,
dx,
dy,
recurse)
Scales the points, position and size of the given cell according to the given vertical and horizontal scaling factors.
mxGraphHandler.prototype.scaleGrid
Specifies if the grid should be scaled.
mxPopupMenuHandler.prototype.screenX
Screen X-coordinate of the mouse down event.
mxPopupMenuHandler.prototype.screenY
Screen Y-coordinate of the mouse down event.
mxGraph.prototype.scrollCellToVisible = function(cell,
center)
Pans the graph so that it shows the given cell.
mxGraphHandler.prototype.scrollOnMove
Specifies if the view should be scrolled so that a moved cell is visible.
mxGraph.prototype.scrollPointToVisible = function(x,
y,
extend,
border)
Scrolls the graph to the given point, extending the graph container if specified.
mxGraph.prototype.scrollRectToVisible = function(rect)
Pans the graph so that it shows the given rectangle.
SegmentConnector: function(state,
source,
target,
hints,
result)
Implements an orthogonal edge style.
mxCellState.prototype.segments
Array of numbers that represent the cached length of each segment of the edge.
mxConnectionHandler.prototype.select
Specifies if new edges should be selected.
Specifies the event name for select.
Fires when an item was selected in the toolbar.
mxGraph.prototype.selectAll = function(parent)
Selects all children of the given parent cell or the children of the default parent if no parent is specified.
mxGraph.prototype.selectCell = function(isNext,
isParent,
isChild)
Selects the next, parent, first child or previous cell, if all arguments are false.
mxGraph.prototype.selectCellForEvent = function(cell,
evt)
Selects the given cell by either adding it to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
mxConnectionHandler.prototype.selectCells = function(edge,
target)
Selects the given edge after adding a new connection.
mxGraph.prototype.selectCells = function(vertices,
edges,
parent)
Selects all vertices and/or edges depending on the given boolean arguments recursively, starting at the given parent or the default parent if no parent is specified.
mxGraph.prototype.selectCellsForEvent = function(cells,
evt)
Selects the given cells by either adding them to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
mxGraph.prototype.selectChildCell = function()
Selects the first child cell.
mxGraphHandler.prototype.selectDelayed = function(me)
Implements the delayed selection for the given mouse event.
mxGraphHandler.prototype.selectEnabled
Specifies if selecting is enabled.
Defines the dashed state to be used for the vertex selection border.
mxGraph.prototype.selectionModel
Holds the mxGraphSelectionModel that models the current selection.
mxToolbar.prototype.selectMode = function(domNode,
funct)
Resets the state of the previously selected mode and displays the given DOM node as selected.
mxGraph.prototype.selectNextCell = function()
Selects the next cell.
mxPopupMenuHandler.prototype.selectOnPopup
Specifies if cells should be selected if a popupmenu is displayed for them.
mxGraph.prototype.selectParentCell = function()
Selects the parent cell.
mxGraph.prototype.selectPreviousCell = function()
Selects the previous cell.
mxGraph.prototype.selectRegion = function(rect,
evt)
Selects and returns the cells inside the given rectangle for the specified event.
mxCellEditor.prototype.selectText
Specifies if the text should be selected when editing starts.
mxGraph.prototype.selectVertices = function(parent)
Select all vertices inside the given parent or the default parent.
mxXmlRequest.prototype.send = function(onload,
onerror)
Send the request to the target URL using the specified functions to process the response asychronously.
mxCellState.prototype.setAbsoluteTerminalPoint = function (point,
isSource)
Sets the first or last point in absolutePoints depending on isSource.
mxSwimlaneManager.prototype.setAddEnabled = function(value)
Sets addEnabled.
mxGraph.prototype.setAllowDanglingEdges = function(value)
Specifies if dangling edges are allowed, that is, if edges are allowed that do not have a source and/or target terminal defined.
mxGraphView.prototype.setAllowEval = function(value)
Sets allowEval.
mxGraph.prototype.setAllowLoops = function(value)
Specifies if loops are allowed.
mxAbstractCanvas2D.prototype.setAlpha = function(value)
Sets the current alpha.
mxXmlCanvas2D.prototype.setAlpha = function(value)
Sets the current alpha.
mxCell.prototype.setAttribute = function(name,
value)
Sets the specified attribute on the user object if it is an XML node.
mxCodec.prototype.setAttribute = function(node,
attribute,
value)
Sets the attribute on the specified node to value.
mxGraph.prototype.setAutoSizeCells = function(value)
Specifies if cell sizes should be automatically updated after a label change.
mxGraph.prototype.setBackgroundImage = function(image)
Sets the new backgroundImage.
mxUrlConverter.prototype.setBaseDomain = function(value)
Sets baseDomain.
mxUrlConverter.prototype.setBaseUrl = function(value)
Sets baseUrl.
mxXmlRequest.prototype.setBinary = function(value)
Sets binary.
mxGraph.prototype.setBorder = function(value)
Sets the value of border.
mxLayoutManager.prototype.setBubbling = function(value)
Sets bubbling.
mxGraphSelectionModel.prototype.setCell = function(cell)
Selects the specified mxCell using setCells.
mxCompactTreeLayout.prototype.setCellHeights = function(node,
rank)
Set the cells heights (relative to the layout direction) when the tops of each rank are to be aligned
mxCoordinateAssignment.prototype.setCellLocations = function(graph,
model)
Sets the cell locations in the facade to those stored after this layout processing step has completed.
setCells: function(cells)
Sets the cells in the clipboard.
mxGraphSelectionModel.prototype.setCells = function(cells)
Selects the given array of mxCells and fires a change event.
mxGraph.prototype.setCellsBendable = function(value)
Specifies if the graph should allow bending of edges.
mxGraph.prototype.setCellsCloneable = function(value)
Specifies if the graph should allow cloning of cells by holding down the control key while cells are being moved.
mxGraph.prototype.setCellsDeletable = function(value)
Sets cellsDeletable.
mxGraph.prototype.setCellsDisconnectable = function(value)
Sets cellsDisconnectable.
mxGraph.prototype.setCellsEditable = function(value)
Specifies if the graph should allow in-place editing for cell labels.
mxGraph.prototype.setCellsMovable = function(value)
Specifies if the graph should allow moving of cells.
mxGraph.prototype.setCellsResizable = function(value)
Specifies if the graph should allow resizing of cells.
mxGraph.prototype.setCellsSelectable = function(value)
Sets cellsSelectable.
mxGraph.prototype.setCellStyle = function(style,
cells)
Sets the style of the specified cells.
mxGraph.prototype.setCellStyleFlags = function(key,
flag,
value,
cells)
Sets or toggles the given bit for the given key in the styles of the specified cells.
setCellStyleFlags: function(model,
cells,
key,
flag,
value)
Sets or toggles the flag bit for the given key in the cell’s styles.
mxGraph.prototype.setCellStyles = function(key,
value,
cells)
Sets the key to value in the styles of the given cells.
setCellStyles: function(model,
cells,
key,
value)
Assigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.
mxGraph.prototype.setCellWarning = function(cell,
warning,
img,
isSelect)
Creates an overlay for the given cell using the warning and image or warningImage and returns the new mxCellOverlay.
mxGraphHandler.prototype.setCloneEnabled = function(value)
Sets cloneEnabled.
mxGraph.prototype.setCloneInvalidEdges = function(value)
Specifies if edges should be inserted when cloned but not valid wrt.
mxWindow.prototype.setClosable = function(closable)
Sets the image associated with the window.
mxCell.prototype.setCollapsed = function(collapsed)
Sets the collapsed state.
mxGraphModel.prototype.setCollapsed = function(cell,
collapsed)
Sets the collapsed state of the given mxCell using mxCollapseChange and adds the change to the current transaction.
mxCell.prototype.setConnectable = function(connectable)
Sets the connectable state.
mxGraph.prototype.setConnectable = function(connectable)
Specifies if the graph should allow new connections.
mxGraph.prototype.setConnectableEdges = function(value)
Specifies if edges should be connectable.
mxGraph.prototype.setConnectionConstraint = function(edge,
terminal,
source,
constraint)
Sets the mxConnectionConstraint that describes the given connection point.
mxGraph.prototype.setConstrainChildren = function(value)
Sets constrainChildren.
mxGraph.prototype.setConstrainChildrenOnResize = function(value)
Sets constrainChildrenOnResize.
mxGraphModel.prototype.setCreateIds = function(value)
Sets createIds.
mxConnectionHandler.prototype.setCreateTarget = function(value)
Sets createTarget.
mxGraphView.prototype.setCurrentRoot = function(root)
Sets and returns the current root and fires an undo event before calling mxGraph.sizeDidChange.
mxCellMarker.prototype.setCurrentState = function(state,
me,
color)
Sets and marks the current valid state.
mxCellState.prototype.setCursor = function (cursor)
Sets the given cursor on the shape and text shape.
mxShape.prototype.setCursor = function(cursor)
Sets the cursor on the given shape.
mxAbstractCanvas2D.prototype.setDashed = function(value)
Enables or disables dashed lines.
mxXmlCanvas2D.prototype.setDashed = function(value)
Enables or disables dashed lines.
mxAbstractCanvas2D.prototype.setDashPattern = function(value)
Sets the current dash pattern.
mxXmlCanvas2D.prototype.setDashPattern = function(value)
Sets the current dash pattern.
mxGraph.prototype.setDefaultParent = function(cell)
Sets the defaultParent to the given cell.
mxGraph.prototype.setDisconnectOnMove = function(value)
Specifies if edges should be disconnected when moved.
mxGraph.prototype.setDropEnabled = function(value)
Specifies if the graph should allow dropping of cells onto or into other cells.
mxCell.prototype.setEdge = function(edge)
Specifies if the cell is an edge.
mxGraphLayout.prototype.setEdgePoints = function(edge,
points)
Replaces the array of mxPoints in the geometry of the given edge with the given array of mxPoints.
mxCoordinateAssignment.prototype.setEdgePosition = function(cell)
Fixes the control points
mxGraphLayout.prototype.setEdgeStyleEnabled = function(edge,
value)
Disables or enables the edge style of the given edge.
mxAutoSaveManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxCellMarker.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxConnectionHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxConstraintHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxDragSource.prototype.setEnabled = function(value)
Sets enabled.
mxGraph.prototype.setEnabled = function(value)
Specifies if the graph should allow any interactions.
mxGraphHandler.prototype.setEnabled = function(value)
Sets enabled.
mxKeyHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling by updating enabled.
mxLayoutManager.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxOutline.prototype.setEnabled = function(value)
Enables or disables event handling.
mxPopupMenu.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxRubberband.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxSelectionCellsHandler.prototype.setEnabled = function(value)
Sets enabled.
mxSpaceManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxSwimlaneManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxTooltipHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxUrlConverter.prototype.setEnabled = function(value)
Sets enabled.
mxGraph.prototype.setEnterStopsCellEditing = function(value)
Sets enterStopsCellEditing.
mxGraph.prototype.setEscapeEnabled = function(value)
Sets escapeEnabled.
mxEventSource.prototype.setEventsEnabled = function(value)
Sets eventsEnabled.
mxEventSource.prototype.setEventSource = function(value)
Sets eventSource.
mxGraph.prototype.setExtendParents = function(value)
Sets extendParents.
mxGraph.prototype.setExtendParentsOnAdd = function(value)
Sets extendParentsOnAdd.
mxAbstractCanvas2D.prototype.setFillColor = function(value)
Sets the current fill color.
mxXmlCanvas2D.prototype.setFillColor = function(value)
Sets the current fill color.
mxXmlCanvas2D.prototype.setFontBackgroundColor = function(value)
Sets the current font background color.
mxXmlCanvas2D.prototype.setFontBorderColor = function(value)
Sets the current font border color.
mxAbstractCanvas2D.prototype.setFontColor = function(value)
Sets the current font color.
mxXmlCanvas2D.prototype.setFontColor = function(value)
Sets the current font color.
mxAbstractCanvas2D.prototype.setFontFamily = function(value)
Sets the current font family.
mxXmlCanvas2D.prototype.setFontFamily = function(value)
Sets the current font family.
mxAbstractCanvas2D.prototype.setFontSize = function(value)
Sets the current font size.
mxXmlCanvas2D.prototype.setFontSize = function(value)
Sets the current font size.
mxAbstractCanvas2D.prototype.setFontStyle = function(value)
Sets the current font style.
mxXmlCanvas2D.prototype.setFontStyle = function(value)
Sets the current font style.
mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable = function(
   layer,
   value
)
Set the value of temp for the specified layer
mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable = function(layer,
value)
Set the value of temp for the specified layer
mxGraphHierarchyNode.prototype.setGeneralPurposeVariable = function(layer,
value)
Set the value of temp for the specified layer
mxCell.prototype.setGeometry = function(geometry)
Sets the mxGeometry to be used as the geometry.
mxGraphModel.prototype.setGeometry = function(cell,
geometry)
Sets the mxGeometry of the given mxCell.
mxAbstractCanvas2D.prototype.setGradient = function(color1,
color2,
x,
y,
w,
h,
direction,
alpha1,
alpha2)
Sets the current gradient.
mxXmlCanvas2D.prototype.setGradient = function(color1,
color2,
x,
y,
w,
h,
direction,
alpha1,
alpha2)
Sets the gradient.
mxAutoSaveManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxLayoutManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxSpaceManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxSwimlaneManager.prototype.setGraph = function(graph)
Sets the graph that the manager operates on.
mxGraphView.prototype.setGraphBounds = function(value)
Sets graphBounds.
mxEditor.prototype.setGraphContainer = function (container)
Sets the graph’s container using mxGraph.init.
mxDragSource.prototype.setGridEnabled = function(value)
Sets gridEnabled.
mxGraph.prototype.setGridEnabled = function(value)
Specifies if the grid should be enabled.
mxGraph.prototype.setGridSize = function(value)
Sets gridSize.
mxDragSource.prototype.setGuidesEnabled = function(value)
Sets guidesEnabled.
mxTooltipHandler.prototype.setHideOnHover = function(value)
Sets hideOnHover.
mxCellHighlight.prototype.setHighlightColor = function(color)
Sets the color of the rectangle used to highlight drop targets.
mxGraphHandler.prototype.setHighlightColor = function(color)
Sets the color of the rectangle used to highlight drop targets.
mxSwimlaneManager.prototype.setHorizontal = function(value)
Sets horizontal.
mxCellMarker.prototype.setHotspot = function(hotspot)
Sets the hotspot.
mxCellMarker.prototype.setHotspotEnabled = function(enabled)
Specifies whether the hotspot should be used in intersects.
mxGraph.prototype.setHtmlLabels = function(value)
Sets htmlLabels.
mxCell.prototype.setId = function(id)
Sets the Id of the cell to the given string.
mxWindow.prototype.setImage = function(image)
Sets the image associated with the window.
Sets the inner HTML of the given element to the value.
mxGraph.prototype.setInvokesStopCellEditing = function(value)
Sets invokesStopCellEditing.
mxAbstractCanvas2D.prototype.setLineCap = function(value)
Sets the current line cap.
mxXmlCanvas2D.prototype.setLineCap = function(value)
Sets the line cap.
mxAbstractCanvas2D.prototype.setLineJoin = function(value)
Sets the current line join.
mxXmlCanvas2D.prototype.setLineJoin = function(value)
Sets the line join.
mxAbstractCanvas2D.prototype.setLink = function(link)
Sets the current link.
mxSvgCanvas2D.prototype.setLink = function(link)
Experimental implementation for hyperlinks.
mxWindow.prototype.setLocation = function(x,
y)
Sets the upper, left corner of the window.
Sets if any cell may be moved, sized, bended, disconnected, edited or selected.
mxWindow.prototype.setMaximizable = function(maximizable)
Sets if the window is maximizable.
mxWindow.prototype.setMinimizable = function(minimizable)
Sets if the window is minimizable.
mxAbstractCanvas2D.prototype.setMiterLimit = function(value)
Sets the current miter limit.
mxXmlCanvas2D.prototype.setMiterLimit = function(value)
Sets the miter limit.
mxEditor.prototype.setMode = function(modename)
Puts the graph into the specified mode.
mxCellEditor.prototype.setModified = function(value)
Sets modified to the specified boolean value.
mxEditor.prototype.setModified = function (value)
Sets modified to the specified boolean value.
mxGraphHandler.prototype.setMoveEnabled = function(value)
Sets moveEnabled.
mxGraph.prototype.setMultigraph = function(value)
Specifies if the graph should allow multiple connections between the same pair of vertices.
setOpacity: function(node,
value)
Sets the opacity of the specified DOM node to the given value in %.
mxGraphLayout.prototype.setOrthogonalEdge = function(edge,
value)
Disables or enables orthogonal end segments of the given edge.
mxGraph.prototype.setPanning = function(enabled)
Specifies if panning should be enabled.
mxPanningHandler.prototype.setPanningEnabled = function(value)
Sets panningEnabled.
mxCell.prototype.setParent = function(parent)
Sets the parent cell.
mxPanningHandler.prototype.setPinchEnabled = function(value)
Sets pinchEnabled.
mxGraph.prototype.setPortsEnabled = function(value)
Specifies if the ports should be enabled.
mxHandle.prototype.setPosition = function(bounds,
pt,
me)
Hooks for subclassers to update the style in the state.
setPrefixedStyle: function()
Adds the given style with the standard name and an optional vendor prefix for the current browser.
mxEdgeHandler.prototype.setPreviewColor = function(color)
Sets the color of the preview to the given value.
mxRectangle.prototype.setRect = function(x,
y,
w,
h)
Sets this rectangle to the specified values
mxGraph.prototype.setRecursiveResize = function(value)
Sets recursiveResize.
mxGraphHandler.prototype.setRemoveCellsFromParent = function(value)
Sets removeCellsFromParent.
mxGraphView.prototype.setRendering = function(value)
Sets rendering.
mxXmlRequest.prototype.setRequestHeaders = function(request,
params)
Sets the headers for the given request and parameters.
mxWindow.prototype.setResizable = function(resizable)
Sets if the window should be resizable.
mxGraph.prototype.setResizeContainer = function(value)
Sets resizeContainer.
mxSwimlaneManager.prototype.setResizeEnabled = function(value)
Sets resizeEnabled.
mxGraphModel.prototype.setRoot = function(root)
Sets the root of the model using mxRootChange and adds the change to the current transaction.
mxGraphView.prototype.setScale = function(value)
Sets the scale and fires a scale event before calling revalidate followed by mxGraph.sizeDidChange.
mxWindow.prototype.setScrollable = function(scrollable)
Sets if the window contents should be scrollable.
mxGraphHandler.prototype.setSelectEnabled = function(value)
Sets selectEnabled.
mxGraph.prototype.setSelectionCell = function(cell)
Sets the selection cell.
mxGraph.prototype.setSelectionCells = function(cells)
Sets the selection cell.
mxGraph.prototype.setSelectionModel = function(selectionModel)
Sets the mxSelectionModel that contains the selection.
mxAbstractCanvas2D.prototype.setShadow = function(enabled)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadow = function(value)
Enables or disables shadows.
mxAbstractCanvas2D.prototype.setShadowAlpha = function(value)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowAlpha = function(value)
Sets the current shadows alpha.
mxAbstractCanvas2D.prototype.setShadowColor = function(value)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowColor = function(value)
Sets the current shadow color.
mxAbstractCanvas2D.prototype.setShadowOffset = function(dx,
dy)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowOffset = function(dx,
dy)
Sets the current shadow offset.
mxSpaceManager.prototype.setShiftDownwards = function(value)
Enables or disables event handling.
mxSpaceManager.prototype.setShiftRightwards = function(value)
Enables or disables event handling.
mxGraphSelectionModel.prototype.setSingleSelection = function(singleSelection)
Sets the singleSelection flag.
mxWindow.prototype.setSize = function(width,
height)
Sets the size of the window.
mxGraph.prototype.setSplitEnabled = function(value)
Specifies if the graph should allow dropping of cells onto or into other cells.
mxGraphView.prototype.setStates = function(value)
Sets states.
mxGuide.prototype.setStates = function(states)
Sets the mxCellStates that should be used for alignment.
mxEditor.prototype.setStatus = function (message)
Display the specified message in the status bar.
mxEditor.prototype.setStatusContainer = function (container)
Creates the status using the specified container.
mxAbstractCanvas2D.prototype.setStrokeColor = function(value)
Sets the current stroke color.
mxXmlCanvas2D.prototype.setStrokeColor = function(value)
Sets the current stroke color.
mxAbstractCanvas2D.prototype.setStrokeWidth = function(value)
Sets the current stroke width.
mxXmlCanvas2D.prototype.setStrokeWidth = function(value)
Sets the current stroke width.
mxCell.prototype.setStyle = function(style)
Sets the string to be used as the style.
mxGraphModel.prototype.setStyle = function(cell,
style)
Sets the style of the given mxCell using mxStyleChange and adds the change to the current transaction.
setStyle: function(style,
key,
value)
Adds or removes the given key, value pair to the style and returns the new style.
setStyleFlag: function(style,
key,
flag,
value)
Sets or removes the given key from the specified style and returns the new style.
mxGraph.prototype.setStylesheet = function(stylesheet)
Sets the mxStylesheet that defines the style.
mxGraph.prototype.setSwimlaneNesting = function(value)
Specifies if swimlanes can be nested by drag and drop.
mxGraph.prototype.setSwimlaneSelectionEnabled = function(value)
Specifies if swimlanes should be selected if the mouse is released over their content area.
mxCell.prototype.setTerminal = function(terminal,
isSource)
Sets the source or target terminal and returns the new terminal.
mxGraphModel.prototype.setTerminal = function(edge,
terminal,
isSource)
Sets the source or target terminal of the given mxCell using mxTerminalChange and adds the change to the current transaction.
mxGeometry.prototype.setTerminalPoint = function(point,
isSource)
Sets the sourcePoint or targetPoint to the given mxPoint and returns the new point.
mxGraphModel.prototype.setTerminals = function(edge,
source,
target)
Sets the source and target mxCell of the given mxCell in a single transaction using setTerminal for each end of the edge.
setTextContent: function(node,
text)
Sets the text content of the specified node.
mxWindow.prototype.setTitle = function(title)
Sets the window title to the given string.
mxEditor.prototype.setTitleContainer = function (container)
Creates a listener to update the inner HTML of the specified DOM node with the value of getTitle.
mxGraph.prototype.setTolerance = function(value)
Sets tolerance.
mxEditor.prototype.setToolbarContainer = function (container)
Initializes the toolbar for the given container.
mxGraph.prototype.setTooltips = function (enabled)
Specifies if tooltips should be enabled.
mxGraphView.prototype.setTranslate = function(dx,
dy)
Sets the translation and fires a translate event before calling revalidate followed by mxGraph.sizeDidChange.
mxShape.prototype.setTransparentBackgroundImage = function(node)
Sets a transparent background CSS style to catch all events.
mxCell.prototype.setValue = function(value)
Sets the user object of the cell.
mxGraphModel.prototype.setValue = function(cell,
value)
Sets the user object of then given mxCell using mxValueChange and adds the change to the current transaction.
mxCell.prototype.setVertex = function(vertex)
Specifies if the cell is a vertex.
mxGraph.prototype.setVertexLabelsMovable = function(value)
Sets vertexLabelsMovable.
mxCoordinateAssignment.prototype.setVertexLocation = function(cell)
Fixes the position of the specified vertex.
mxGraphLayout.prototype.setVertexLocation = function(cell,
x,
y)
Sets the new position of the given cell taking into account the size of the bounding box if useBoundingBox is true.
mxCell.prototype.setVisible = function(visible)
Specifies if the cell is visible.
mxGraphModel.prototype.setVisible = function(cell,
visible)
Sets the visible state of the given mxCell using mxVisibleChange and adds the change to the current transaction.
setVisible: function(visible)
Shows or hides the console.
mxHandle.prototype.setVisible = function(visible)
Shows or hides this handle.
mxWindow.prototype.setVisible = function(visible)
Shows or hides the window depending on the given flag.
mxCellState.prototype.setVisibleTerminalState = function (terminalState,
source)
Sets the visible source or target terminal state.
mxGraphAbstractHierarchyCell.prototype.setX = function(layer,
value)
Set the value of x for the specified layer
mxGraphAbstractHierarchyCell.prototype.setY = function(layer,
value)
Set the value of y for the specified layer
mxOutline.prototype.setZoomEnabled = function(value)
Enables or disables the zoom handling by showing or hiding the respective handle.
Specifies the x-offset of the shadow.
Specifies the y-offset of the shadow.
Defines the opacity for shadows.
Defines the color to be used to draw shadows in shapes and windows.
mxCellState.prototype.shape
Holds the mxShape that represents the cell graphically.
mxEdgeHandler.prototype.shape
Holds the mxShape that represents the preview edge.
mxGraphHandler.prototype.shape
Reference to the mxShape that represents the preview.
Name under which mxActor is registered in mxCellRenderer.
Name under which mxArrow is registered in mxCellRenderer.
Name under which mxCloud is registered in mxCellRenderer.
Name under which mxConnector is registered in mxCellRenderer.
Name under which mxCylinder is registered in mxCellRenderer.
Name under which mxDoubleEllipse is registered in mxCellRenderer.
Name under which mxEllipse is registered in mxCellRenderer.
Name under which mxHexagon is registered in mxCellRenderer.
Name under which mxImageShape is registered in mxCellRenderer.
Name under which mxLabel is registered in mxCellRenderer.
Name under which mxLine is registered in mxCellRenderer.
Name under which mxRectangleShape is registered in mxCellRenderer.
Name under which mxRhombus is registered in mxCellRenderer.
Name under which mxSwimlane is registered in mxCellRenderer.
Name under which mxTriangle is registered in mxCellRenderer.
mxShape.prototype.shapePointerEvents
Specifies if pointer events outside of shape should be handled.
mxRubberband.prototype.sharedDiv
Holds the DIV element which is used to display the rubberband.
mxSpaceManager.prototype.shiftCell = function(cell,
dx,
dy,
Ox0,
y0,
right,
bottom,
fx,
fy,
extendParent)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxSpaceManager.prototype.shiftDownwards
Specifies if event handling is enabled.
mxKeyHandler.prototype.shiftKeys
Maps from keycodes to functions for pressed shift keys.
mxSpaceManager.prototype.shiftRightwards
Specifies if event handling is enabled.
mxGraphHandler.prototype.shouldRemoveCellsFromParent = function(parent,
cells,
evt)
Returns true if the given cells should be removed from the parent for the specified mousereleased event.
mxCellStatePreview.prototype.show = function(visitor)
show: function()
Shows the console.
mxMorphing.prototype.show = function(move)
Shows the changes in the given mxCellStatePreview.
mxTooltipHandler.prototype.show = function(tip,
x,
y)
Shows the tooltip for the specified cell and optional index at the specified location (with a vertical offset of 10 pixels).
show: function(graph,
doc,
x0,
y0,
w,
h)
Copies the styles and the markup from the graph’s container into the given document and removes all cursor styles.
mxWindow.prototype.show = function()
Shows the window.
Specifies the event name for show.
Fires after the menu has been shown in popup.
Fires after the window is shown.
mxEditor.prototype.showHelp = function (tasks)
Shows the help window.
mxPopupMenu.prototype.showMenu = function()
Shows the menu.
mxEditor.prototype.showOutline = function ()
Shows the outline window.
mxEditor.prototype.showProperties = function (cell)
Creates and shows the properties dialog for the given cell.
mxPopupMenu.prototype.showSubmenu = function(parent,
row)
Shows the submenu inside the given parent row.
mxEditor.prototype.showTasks = function ()
Shows the tasks window.
mxOutline.prototype.showViewport
Specifies a viewport rectangle should be shown.
SideToSide: function (state,
source,
target,
points,
result)
Implements a vertical elbow edge.
mxUndoableEdit.prototype.significant
Specifies if the undoable change is significant.
mxXmlRequest.prototype.simulate = function(doc,
target)
Creates and posts a request to the given target URL using a dynamically created form inside the given document.
mxGraphSelectionModel.prototype.singleSelection
Specifies if only one selected item at a time is allowed.
mxVertexHandler.prototype.singleSizer
Specifies if only one sizer handle at the bottom, right corner should be used.
mxUndoManager.prototype.size
Maximum command history size.
Specifies the event name for size.
Fires after sizeDidChange was executed.
mxGraph.prototype.sizeDidChange = function()
Called when the size of the graph has changed.
mxOutline.prototype.sizerImage
Optional mxImage to be used for the sizer.
mxPopupMenu.prototype.smartSeparators
Specifies if separators should only be added if a menu item follows them.
mxGraph.prototype.snap = function(value)
Snaps the given numeric value to the grid if gridEnabled is true.
mxGraphHandler.prototype.snap = function(vector)
Snaps the given vector to the grid and returns the given mxPoint instance.
mxHandle.prototype.snapPoint = function(pt,
ignore)
Snaps the given point to the grid if ignore is false.
mxEdgeHandler.prototype.snapToTerminals
Specifies if waypoints should snap to the routing centers of terminals.
sortCells: function(cells,
ascending)
Sorts the given cells according to the order in the cell hierarchy.
mxCompactTreeLayout.prototype.sortEdges
Specifies if edges should be sorted according to the order of their opposite terminal cell in the model.
mxRadialTreeLayout.prototype.sortEdges
Specifies if edges should be sorted according to the order of their opposite terminal cell in the model.
mxCompactTreeLayout.prototype.sortOutgoingEdges = function(source,
edges)
Called if sortEdges is true to sort the array of outgoing edges in place.
mxCell.prototype.source
Reference to the source terminal.
mxGraphHierarchyEdge.prototype.source
The node this edge is sourced at
mxMultiplicity.prototype.source
Boolean that specifies if the rule is applied to the source or target terminal of an edge.
Reference to the source mxGraph.
mxUndoableEdit.prototype.source
Specifies the source of the edit.
mxGeometry.prototype.sourcePoint
Defines the source mxPoint of the edge.
mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK
High value to start source layering scan rank value from.
mxSwimlaneModel.prototype.SOURCESCANSTARTRANK
High value to start source layering scan rank value from.
mxCellHighlight.prototype.spacing
Specifies the spacing between the highlight for vertices and the vertex.
mxDefaultToolbar.prototype.spacing
Defines the spacing between existing and new vertices in gridSize units when a new vertex is dropped on an existing cell.
mxLabel.prototype.spacing
Default value for image spacing.
mxParallelEdgeLayout.prototype.spacing
Defines the spacing between the parallels.
mxPartitionLayout.prototype.spacing
Integer that specifies the absolute spacing in pixels between the children.
mxStackLayout.prototype.spacing
Specifies the spacing between the cells.
Specifies the event name for splitEdge.
Fires between begin- and endUpdate in splitEdge.
mxGraph.prototype.splitEdge = function(edge,
cells,
newEdge,
dx,
dy)
Splits the given edge by adding the newEdge between the previous source and the given cell and reconnecting the source of the given edge to the given cell.
mxGraph.prototype.splitEnabled
Specifies if dropping onto edges should be enabled.
mxImage.prototype.src
String that specifies the URL of the image.
mxConnectionHandler.prototype.start = function(state,
x,
y,
edgeState)
Starts a new connection for the given state and coordinates.
mxEdgeHandler.prototype.start = function(x,
y,
index)
Starts the handling of the mouse gesture.
mxGraphHandler.prototype.start = function(cell,
x,
y)
Starts the handling of the mouse gesture.
mxPanningHandler.prototype.start = function(me)
Starts panning at the given event.
mxRubberband.prototype.start = function(x,
y)
Sets the start point for the rubberband selection.
mxVertexHandler.prototype.start = function(x,
y,
index)
Starts the handling of the mouse gesture.
Fires when a new connection is being created by the user.
Specifies the event name for start.
Specifies the event name for startEdit.
Fires after the updateLevel was changed from 0 to 1.
Fires before a set of changes will be executed in undo or redo.
Specifies the event name for startEditing.
Fires before the in-place editor starts in startEditingAtCell.
mxAnimation.prototype.startAnimation = function()
Starts the animation by repeatedly invoking updateAnimation.
mxDragSource.prototype.startDrag = function(evt)
Creates the dragElement using createDragElement.
mxCellEditor.prototype.startEditing = function(cell,
trigger)
Starts the editor for the given cell.
mxGraph.prototype.startEditing = function(evt)
Calls startEditingAtCell using the given cell or the first selection cell.
mxGraph.prototype.startEditingAtCell = function(cell,
evt)
Fires a startEditing event and invokes mxCellEditor.startEditing on editor.
mxPanningHandler.prototype.startX
Holds the x-coordinate of the start point.
mxPanningHandler.prototype.startY
Holds the y-coordinate of the start point.
mxAbstractCanvas2D.prototype.state
Holds the current state.
mxCellHighlight.prototype.state
Reference to the mxCellState.
mxEdgeHandler.prototype.state
Reference to the mxCellState being modified.
mxMouseEvent.prototype.state
Holds the optional mxCellState associated with this event.
mxShape.prototype.state
Optional reference to the corresponding mxCellState.
mxVertexHandler.prototype.state
Reference to the mxCellState being modified.
mxAbstractCanvas2D.prototype.states
Stack of states.
mxGuide.prototype.states
Contains the mxCellStates that are used for alignment.
mxGraphView.prototype.stateValidated = function(state)
Invoked when a state has been processed in validatePoints.
mxEditor.prototype.status
DOM container that holds the statusbar.
mxShape.prototype.stencil
Holds the mxStencil that defines the shape.
mxShape.prototype.stencilPointerEvents
Specifies if pointer events outside of stencils should be handled.
mxMorphing.prototype.step
Contains the current step.
mxMorphing.prototype.steps
Specifies the maximum number of steps for the morphing.
Defines the step size to offset the cells after each paste operation.
mxAnimation.prototype.stopAnimation = function()
Stops the animation by deleting the timer and fires an mxEvent.DONE.
mxDragSource.prototype.stopDrag = function()
Invokes removeDragElement.
mxCellEditor.prototype.stopEditing = function(cancel)
Stops the editor and applies the value if cancel is false.
mxGraph.prototype.stopEditing = function(cancel)
Stops the current editing and fires a editingStopped event.
mxMorphing.prototype.stopRecursion = function(state,
delta)
Returns true if the animation should not recursively find more deltas for children if the given parent state has been animated.
mxSvgCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxVmlCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxXmlCanvas2D.prototype.stroke = function()
Paints the outline of the current drawing buffer.
mxSvgCanvas2D.prototype.strokeTolerance
Adds transparent paths for strokes.
mxStencil.prototype.strokewidth
Holds the strokewidth direction from the description.
mxCell.prototype.style
Holds the style as a string of the form [(stylename|key=value);].
mxCellState.prototype.style
Contains an array of key, value pairs that represent the style of the cell.
mxShape.prototype.style
Optional reference to the style of the corresponding mxCellState.
Defines the key for the align style.
Defines the rounding factor for a rounded rectangle in percent (without the percent sign).
Defines the key for the aspect style.
Defines the key for the autosize style.
Defines the key for the bendable style.
Defines the key for the cloneable style.
Defines the key for the curved style.
Defines the key for the dashed style.
Defines the key for the deletable style.
Defines the key for the direction style.
Defines the key for the edge style.
Defines the key for the editable style.
Defines the key for the elbow style.
Defines the key for the end arrow marker.
Defines the key for the endFill style.
Defines the key for the endSize style.
Defines if the perimeter should be used to find the exact entry point along the perimeter of the target.
Defines the key for the horizontal relative coordinate connection point of an edge with its target terminal.
Defines the key for the vertical relative coordinate connection point of an edge with its target terminal.
Defines if the perimeter should be used to find the exact entry point along the perimeter of the source.
Defines the key for the horizontal relative coordinate connection point of an edge with its source terminal.
Defines the key for the vertical relative coordinate connection point of an edge with its source terminal.
Defines the key for the fill color.
Defines the key for the horizontal image flip.
Defines the key for the vertical flip.
Defines the key for the foldable style.
Defines the key for the fontColor style.
Defines the key for the fontFamily style.
Defines the key for the fontSize style (in points).
Defines the key for the fontStyle style.
Defines the key for the glass style.
Defines the key for the gradient direction.
Defines the key for the gradient color.
Defines the key for the horizontal style.
Defines the key for the image style.
Defines the key for the align style.
Defines the key for the image aspect style.
Defines the key for the image background color.
Defines the key for the image border color.
Defines the key for the imageHeight style.
Defines the key for the verticalAlign style.
Defines the key for the imageWidth style.
Defines the key for the indicatorColor style.
Defines the key for the indicatorDirection style.
Defines the key for the indicatorGradientColor style.
Defines the key for the indicator height.
Defines the key for the indicator image used within an mxLabel.
Defines the key for the indicator shape used within an mxLabel.
The defines the key for the spacing between the label and the indicator in mxLabel.
Defines the key for the indicator stroke color in mxLabel.
Defines the key for the indicator width.
Defines the key for the label background color.
Defines the key for the label border color.
Defines the key for the label padding, ie.
Defines the key for the horizontal label position of vertices.
Defines the key for the width of the label if the label position is not center.
Defines the key for the loop style.
Defines the key for the margin between the ellipses in the double ellipse shape.
Defines the key for the movable style.
Defines the key for the noEdgeStyle style.
Defines the key for the noLabel style.
Defines the key for the opacity style.
Defines if the connection points on either end of the edge should be computed so that the edge is vertical or horizontal if possible and if the point is not at a fixed location.
Defines the key for the overflow style.
Defines the key for the perimeter style.
Defines the key for the perimeter spacing.
Defines the direction(s) that edges are allowed to connect to cells in.
Define whether port constraint directions are rotated with vertex rotation.
Defines the key for the resizable style.
Defines the key for the rotatable style.
Defines the key for the rotation style.
Defines the key for the rounded style.
Defines the key for the horizontal routing center.
Defines the key for the vertical routing center.
Defines the key for the segment style.
Defines the key for the separatorColor style.
Defines the key for the shadow style.
Defines the key for the shape.
An experimental style for edges.
Defines the key for the source perimeter spacing.
Defines the ID of the cell that should be used for computing the perimeter point of the source for an edge.
Defines the key for the spacing.
Defines the key for the spacingBottom style The value represents the spacing, in pixels, added to the bottom side of a label in a vertex (style applies to vertices only).
Defines the key for the spacingLeft style.
Defines the key for the spacingRight style The value represents the spacing, in pixels, added to the right side of a label in a vertex (style applies to vertices only).
Defines the key for the spacingTop style.
Defines the key for the start arrow marker.
Defines the key for the startFill style.
Defines the key for the startSize style.
Defines the key for the strokeColor style.
Defines the key for the strokeWidth style.
Defines the key for the fill color of the swimlane background.
Defines the key for the swimlaneLine style.
Defines the key for the target perimeter spacing.
Defines the ID of the cell that should be used for computing the perimeter point of the target for an edge.
Defines the key for the text opacity style.
Defines the key for the verticalAlign style.
Defines the key for the vertical label position of vertices.
Defines the key for the white-space style.
this.styleEnabled
Stores the value of styleEnabled passed to the constructor.
mxGraphModel.prototype.styleForCellChanged = function(cell,
style)
Inner callback to update the style of the given mxCell using mxCell.setStyle and return the previous style.
Maps from names to cell styles.
mxGraph.prototype.stylesheet
Holds the mxStylesheet that defines the appearance of the cells.
mxPopupMenu.prototype.submenuImage
URL of the image to be used for the submenu icon.
submit: function(url,
params,
doc,
target)
Submits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.
Specifies the event name for suspend.
mxOutline.prototype.suspended
Optional boolean flag to suspend updates.
mxShape.prototype.svgPointerEvents
Specifies if pointer events should be handled.
mxCylinder.prototype.svgStrokeTolerance
Sets stroke tolerance to 0 for SVG.
mxShape.prototype.svgStrokeTolerance
Event-tolerance for SVG strokes (in px).
mxGeometry.prototype.swap = function()
Swaps the x, y, width and height with the values stored in alternateBounds and puts the previous values into alternateBounds as a rectangle.
mxGraph.prototype.swapBounds = function(cell,
willCollapse)
Swaps the alternate and the actual bounds in the geometry of the given cell invoking updateAlternateBounds before carrying out the swap.
mxEditor.prototype.swapStyles = function (first,
second)
Swaps the styles for the given names in the graph’s stylesheet and refreshes the graph.
mxSwimlaneManager.prototype.swimlaneAdded = function(swimlane)
Updates the size of the given swimlane to match that of any existing siblings swimlanes.
mxGraph.prototype.swimlaneIndicatorColorAttribute
The attribute used to find the color for the indicator if the indicator color is set to ‘swimlane’.
mxGraph.prototype.swimlaneNesting
Specifies if nesting of swimlanes is allowed.
mxEditor.prototype.swimlaneRequired
Specifies if new cells must be inserted into an existing swimlane.
mxSwimlaneLayout.prototype.swimlanes
Holds the array of mxCell of the ordered swimlanes to lay out
mxGraph.prototype.swimlaneSelectionEnabled
Specifies if swimlanes should be selectable via the content if the mouse is released.
mxEditor.prototype.swimlaneSpacing
Specifies the spacing between swimlanes if automatic layout is turned on in layoutDiagram.
+
mxAbstractCanvas2D.prototype.save = function()
Saves the current state.
mxAutoSaveManager.prototype.save = function()
Empty hook that is called if the graph should be saved.
mxEditor.prototype.save = function (url,
linefeed)
Posts the string returned by writeGraphModel to the given URL or the URL returned by getUrlPost.
mxXmlCanvas2D.prototype.save = function()
Saves the drawing state.
Fires after the current file was saved in save.
Specifies the event name for open.
mxAbstractCanvas2D.prototype.scale = function(value)
Scales the current state.
mxGeometry.prototype.scale = function(sx,
sy,
fixedAspect)
Scales the geometry by the given amount.
mxGraphView.prototype.scale
Specifies the scale.
mxPrintPreview.prototype.scale
Holds the scale of the print preview.
mxShape.prototype.scale
Holds the scale in which the shape is being painted.
mxXmlCanvas2D.prototype.scale = function(value)
Scales the output.
Specifies the event name for scale.
Fires after the scale was changed in setScale.
Specifies the event name for scaleAndTranslate.
Fires after the scale and translate have been changed in scaleAndTranslate.
mxGraphView.prototype.scaleAndTranslate = function(scale,
dx,
dy)
Sets the scale and translation and fires a scale and translate event before calling revalidate followed by mxGraph.sizeDidChange.
mxGraph.prototype.scaleCell = function(cell,
dx,
dy,
recurse)
Scales the points, position and size of the given cell according to the given vertical and horizontal scaling factors.
mxGraphHandler.prototype.scaleGrid
Specifies if the grid should be scaled.
mxPopupMenuHandler.prototype.screenX
Screen X-coordinate of the mouse down event.
mxPopupMenuHandler.prototype.screenY
Screen Y-coordinate of the mouse down event.
mxGraph.prototype.scrollCellToVisible = function(cell,
center)
Pans the graph so that it shows the given cell.
mxGraphHandler.prototype.scrollOnMove
Specifies if the view should be scrolled so that a moved cell is visible.
mxGraph.prototype.scrollPointToVisible = function(x,
y,
extend,
border)
Scrolls the graph to the given point, extending the graph container if specified.
mxGraph.prototype.scrollRectToVisible = function(rect)
Pans the graph so that it shows the given rectangle.
SegmentConnector: function(state,
source,
target,
hints,
result)
Implements an orthogonal edge style.
mxCellState.prototype.segments
Array of numbers that represent the cached length of each segment of the edge.
mxConnectionHandler.prototype.select
Specifies if new edges should be selected.
Specifies the event name for select.
Fires when an item was selected in the toolbar.
mxGraph.prototype.selectAll = function(parent)
Selects all children of the given parent cell or the children of the default parent if no parent is specified.
mxGraph.prototype.selectCell = function(isNext,
isParent,
isChild)
Selects the next, parent, first child or previous cell, if all arguments are false.
mxGraph.prototype.selectCellForEvent = function(cell,
evt)
Selects the given cell by either adding it to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
mxConnectionHandler.prototype.selectCells = function(edge,
target)
Selects the given edge after adding a new connection.
mxGraph.prototype.selectCells = function(vertices,
edges,
parent)
Selects all vertices and/or edges depending on the given boolean arguments recursively, starting at the given parent or the default parent if no parent is specified.
mxGraph.prototype.selectCellsForEvent = function(cells,
evt)
Selects the given cells by either adding them to the selection or replacing the selection depending on whether the given mouse event is a toggle event.
mxGraph.prototype.selectChildCell = function()
Selects the first child cell.
mxGraphHandler.prototype.selectDelayed = function(me)
Implements the delayed selection for the given mouse event.
mxGraphHandler.prototype.selectEnabled
Specifies if selecting is enabled.
Defines the dashed state to be used for the vertex selection border.
mxGraph.prototype.selectionModel
Holds the mxGraphSelectionModel that models the current selection.
mxToolbar.prototype.selectMode = function(domNode,
funct)
Resets the state of the previously selected mode and displays the given DOM node as selected.
mxGraph.prototype.selectNextCell = function()
Selects the next cell.
mxPopupMenuHandler.prototype.selectOnPopup
Specifies if cells should be selected if a popupmenu is displayed for them.
mxGraph.prototype.selectParentCell = function()
Selects the parent cell.
mxGraph.prototype.selectPreviousCell = function()
Selects the previous cell.
mxGraph.prototype.selectRegion = function(rect,
evt)
Selects and returns the cells inside the given rectangle for the specified event.
mxCellEditor.prototype.selectText
Specifies if the text should be selected when editing starts.
mxGraph.prototype.selectVertices = function(parent)
Select all vertices inside the given parent or the default parent.
mxXmlRequest.prototype.send = function(onload,
onerror)
Send the request to the target URL using the specified functions to process the response asychronously.
mxCellState.prototype.setAbsoluteTerminalPoint = function (point,
isSource)
Sets the first or last point in absolutePoints depending on isSource.
mxSwimlaneManager.prototype.setAddEnabled = function(value)
Sets addEnabled.
mxGraph.prototype.setAllowDanglingEdges = function(value)
Specifies if dangling edges are allowed, that is, if edges are allowed that do not have a source and/or target terminal defined.
mxGraphView.prototype.setAllowEval = function(value)
Sets allowEval.
mxGraph.prototype.setAllowLoops = function(value)
Specifies if loops are allowed.
mxAbstractCanvas2D.prototype.setAlpha = function(value)
Sets the current alpha.
mxXmlCanvas2D.prototype.setAlpha = function(value)
Sets the current alpha.
mxCell.prototype.setAttribute = function(name,
value)
Sets the specified attribute on the user object if it is an XML node.
mxCodec.prototype.setAttribute = function(node,
attribute,
value)
Sets the attribute on the specified node to value.
mxGraph.prototype.setAutoSizeCells = function(value)
Specifies if cell sizes should be automatically updated after a label change.
mxGraph.prototype.setBackgroundImage = function(image)
Sets the new backgroundImage.
mxUrlConverter.prototype.setBaseDomain = function(value)
Sets baseDomain.
mxUrlConverter.prototype.setBaseUrl = function(value)
Sets baseUrl.
mxXmlRequest.prototype.setBinary = function(value)
Sets binary.
mxGraph.prototype.setBorder = function(value)
Sets the value of border.
mxLayoutManager.prototype.setBubbling = function(value)
Sets bubbling.
mxGraphSelectionModel.prototype.setCell = function(cell)
Selects the specified mxCell using setCells.
mxCompactTreeLayout.prototype.setCellHeights = function(node,
rank)
Set the cells heights (relative to the layout direction) when the tops of each rank are to be aligned
mxCoordinateAssignment.prototype.setCellLocations = function(graph,
model)
Sets the cell locations in the facade to those stored after this layout processing step has completed.
setCells: function(cells)
Sets the cells in the clipboard.
mxGraphSelectionModel.prototype.setCells = function(cells)
Selects the given array of mxCells and fires a change event.
mxGraph.prototype.setCellsBendable = function(value)
Specifies if the graph should allow bending of edges.
mxGraph.prototype.setCellsCloneable = function(value)
Specifies if the graph should allow cloning of cells by holding down the control key while cells are being moved.
mxGraph.prototype.setCellsDeletable = function(value)
Sets cellsDeletable.
mxGraph.prototype.setCellsDisconnectable = function(value)
Sets cellsDisconnectable.
mxGraph.prototype.setCellsEditable = function(value)
Specifies if the graph should allow in-place editing for cell labels.
mxGraph.prototype.setCellsMovable = function(value)
Specifies if the graph should allow moving of cells.
mxGraph.prototype.setCellsResizable = function(value)
Specifies if the graph should allow resizing of cells.
mxGraph.prototype.setCellsSelectable = function(value)
Sets cellsSelectable.
mxGraph.prototype.setCellStyle = function(style,
cells)
Sets the style of the specified cells.
mxGraph.prototype.setCellStyleFlags = function(key,
flag,
value,
cells)
Sets or toggles the given bit for the given key in the styles of the specified cells.
setCellStyleFlags: function(model,
cells,
key,
flag,
value)
Sets or toggles the flag bit for the given key in the cell’s styles.
mxGraph.prototype.setCellStyles = function(key,
value,
cells)
Sets the key to value in the styles of the given cells.
setCellStyles: function(model,
cells,
key,
value)
Assigns the value for the given key in the styles of the given cells, or removes the key from the styles if the value is null.
mxGraph.prototype.setCellWarning = function(cell,
warning,
img,
isSelect)
Creates an overlay for the given cell using the warning and image or warningImage and returns the new mxCellOverlay.
mxGraphHandler.prototype.setCloneEnabled = function(value)
Sets cloneEnabled.
mxGraph.prototype.setCloneInvalidEdges = function(value)
Specifies if edges should be inserted when cloned but not valid wrt.
mxWindow.prototype.setClosable = function(closable)
Sets the image associated with the window.
mxCell.prototype.setCollapsed = function(collapsed)
Sets the collapsed state.
mxGraphModel.prototype.setCollapsed = function(cell,
collapsed)
Sets the collapsed state of the given mxCell using mxCollapseChange and adds the change to the current transaction.
mxCell.prototype.setConnectable = function(connectable)
Sets the connectable state.
mxGraph.prototype.setConnectable = function(connectable)
Specifies if the graph should allow new connections.
mxGraph.prototype.setConnectableEdges = function(value)
Specifies if edges should be connectable.
mxGraph.prototype.setConnectionConstraint = function(edge,
terminal,
source,
constraint)
Sets the mxConnectionConstraint that describes the given connection point.
mxGraph.prototype.setConstrainChildren = function(value)
Sets constrainChildren.
mxGraph.prototype.setConstrainChildrenOnResize = function(value)
Sets constrainChildrenOnResize.
mxGraphModel.prototype.setCreateIds = function(value)
Sets createIds.
mxConnectionHandler.prototype.setCreateTarget = function(value)
Sets createTarget.
mxGraphView.prototype.setCurrentRoot = function(root)
Sets and returns the current root and fires an undo event before calling mxGraph.sizeDidChange.
mxCellMarker.prototype.setCurrentState = function(state,
me,
color)
Sets and marks the current valid state.
mxCellState.prototype.setCursor = function (cursor)
Sets the given cursor on the shape and text shape.
mxShape.prototype.setCursor = function(cursor)
Sets the cursor on the given shape.
mxAbstractCanvas2D.prototype.setDashed = function(value)
Enables or disables dashed lines.
mxXmlCanvas2D.prototype.setDashed = function(value)
Enables or disables dashed lines.
mxAbstractCanvas2D.prototype.setDashPattern = function(value)
Sets the current dash pattern.
mxXmlCanvas2D.prototype.setDashPattern = function(value)
Sets the current dash pattern.
mxGraph.prototype.setDefaultParent = function(cell)
Sets the defaultParent to the given cell.
mxGraph.prototype.setDisconnectOnMove = function(value)
Specifies if edges should be disconnected when moved.
mxGraph.prototype.setDropEnabled = function(value)
Specifies if the graph should allow dropping of cells onto or into other cells.
mxCell.prototype.setEdge = function(edge)
Specifies if the cell is an edge.
mxGraphLayout.prototype.setEdgePoints = function(edge,
points)
Replaces the array of mxPoints in the geometry of the given edge with the given array of mxPoints.
mxCoordinateAssignment.prototype.setEdgePosition = function(cell)
Fixes the control points
mxGraphLayout.prototype.setEdgeStyleEnabled = function(edge,
value)
Disables or enables the edge style of the given edge.
mxAutoSaveManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxCellMarker.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxConnectionHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxConstraintHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxDragSource.prototype.setEnabled = function(value)
Sets enabled.
mxGraph.prototype.setEnabled = function(value)
Specifies if the graph should allow any interactions.
mxGraphHandler.prototype.setEnabled = function(value)
Sets enabled.
mxKeyHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling by updating enabled.
mxLayoutManager.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxOutline.prototype.setEnabled = function(value)
Enables or disables event handling.
mxPopupMenu.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxRubberband.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxSelectionCellsHandler.prototype.setEnabled = function(value)
Sets enabled.
mxSpaceManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxSwimlaneManager.prototype.setEnabled = function(value)
Enables or disables event handling.
mxTooltipHandler.prototype.setEnabled = function(enabled)
Enables or disables event handling.
mxUrlConverter.prototype.setEnabled = function(value)
Sets enabled.
mxGraph.prototype.setEnterStopsCellEditing = function(value)
Sets enterStopsCellEditing.
mxGraph.prototype.setEscapeEnabled = function(value)
Sets escapeEnabled.
mxEventSource.prototype.setEventsEnabled = function(value)
Sets eventsEnabled.
mxEventSource.prototype.setEventSource = function(value)
Sets eventSource.
mxGraph.prototype.setExtendParents = function(value)
Sets extendParents.
mxGraph.prototype.setExtendParentsOnAdd = function(value)
Sets extendParentsOnAdd.
mxAbstractCanvas2D.prototype.setFillColor = function(value)
Sets the current fill color.
mxXmlCanvas2D.prototype.setFillColor = function(value)
Sets the current fill color.
mxXmlCanvas2D.prototype.setFontBackgroundColor = function(value)
Sets the current font background color.
mxXmlCanvas2D.prototype.setFontBorderColor = function(value)
Sets the current font border color.
mxAbstractCanvas2D.prototype.setFontColor = function(value)
Sets the current font color.
mxXmlCanvas2D.prototype.setFontColor = function(value)
Sets the current font color.
mxAbstractCanvas2D.prototype.setFontFamily = function(value)
Sets the current font family.
mxXmlCanvas2D.prototype.setFontFamily = function(value)
Sets the current font family.
mxAbstractCanvas2D.prototype.setFontSize = function(value)
Sets the current font size.
mxXmlCanvas2D.prototype.setFontSize = function(value)
Sets the current font size.
mxAbstractCanvas2D.prototype.setFontStyle = function(value)
Sets the current font style.
mxXmlCanvas2D.prototype.setFontStyle = function(value)
Sets the current font style.
mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable = function(
   layer,
   value
)
Set the value of temp for the specified layer
mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable = function(layer,
value)
Set the value of temp for the specified layer
mxGraphHierarchyNode.prototype.setGeneralPurposeVariable = function(layer,
value)
Set the value of temp for the specified layer
mxCell.prototype.setGeometry = function(geometry)
Sets the mxGeometry to be used as the geometry.
mxGraphModel.prototype.setGeometry = function(cell,
geometry)
Sets the mxGeometry of the given mxCell.
mxAbstractCanvas2D.prototype.setGradient = function(color1,
color2,
x,
y,
w,
h,
direction,
alpha1,
alpha2)
Sets the current gradient.
mxXmlCanvas2D.prototype.setGradient = function(color1,
color2,
x,
y,
w,
h,
direction,
alpha1,
alpha2)
Sets the gradient.
mxAutoSaveManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxLayoutManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxSpaceManager.prototype.setGraph = function(graph)
Sets the graph that the layouts operate on.
mxSwimlaneManager.prototype.setGraph = function(graph)
Sets the graph that the manager operates on.
mxGraphView.prototype.setGraphBounds = function(value)
Sets graphBounds.
mxEditor.prototype.setGraphContainer = function (container)
Sets the graph’s container using mxGraph.init.
mxDragSource.prototype.setGridEnabled = function(value)
Sets gridEnabled.
mxGraph.prototype.setGridEnabled = function(value)
Specifies if the grid should be enabled.
mxGraph.prototype.setGridSize = function(value)
Sets gridSize.
mxDragSource.prototype.setGuidesEnabled = function(value)
Sets guidesEnabled.
mxTooltipHandler.prototype.setHideOnHover = function(value)
Sets hideOnHover.
mxCellHighlight.prototype.setHighlightColor = function(color)
Sets the color of the rectangle used to highlight drop targets.
mxGraphHandler.prototype.setHighlightColor = function(color)
Sets the color of the rectangle used to highlight drop targets.
mxSwimlaneManager.prototype.setHorizontal = function(value)
Sets horizontal.
mxCellMarker.prototype.setHotspot = function(hotspot)
Sets the hotspot.
mxCellMarker.prototype.setHotspotEnabled = function(enabled)
Specifies whether the hotspot should be used in intersects.
mxGraph.prototype.setHtmlLabels = function(value)
Sets htmlLabels.
mxCell.prototype.setId = function(id)
Sets the Id of the cell to the given string.
mxWindow.prototype.setImage = function(image)
Sets the image associated with the window.
Sets the inner HTML of the given element to the value.
mxGraph.prototype.setInvokesStopCellEditing = function(value)
Sets invokesStopCellEditing.
mxAbstractCanvas2D.prototype.setLineCap = function(value)
Sets the current line cap.
mxXmlCanvas2D.prototype.setLineCap = function(value)
Sets the line cap.
mxAbstractCanvas2D.prototype.setLineJoin = function(value)
Sets the current line join.
mxXmlCanvas2D.prototype.setLineJoin = function(value)
Sets the line join.
mxAbstractCanvas2D.prototype.setLink = function(link)
Sets the current link.
mxSvgCanvas2D.prototype.setLink = function(link)
Experimental implementation for hyperlinks.
mxWindow.prototype.setLocation = function(x,
y)
Sets the upper, left corner of the window.
Sets if any cell may be moved, sized, bended, disconnected, edited or selected.
mxWindow.prototype.setMaximizable = function(maximizable)
Sets if the window is maximizable.
mxWindow.prototype.setMinimizable = function(minimizable)
Sets if the window is minimizable.
mxAbstractCanvas2D.prototype.setMiterLimit = function(value)
Sets the current miter limit.
mxXmlCanvas2D.prototype.setMiterLimit = function(value)
Sets the miter limit.
mxEditor.prototype.setMode = function(modename)
Puts the graph into the specified mode.
mxCellEditor.prototype.setModified = function(value)
Sets modified to the specified boolean value.
mxEditor.prototype.setModified = function (value)
Sets modified to the specified boolean value.
mxGraphHandler.prototype.setMoveEnabled = function(value)
Sets moveEnabled.
mxGraph.prototype.setMultigraph = function(value)
Specifies if the graph should allow multiple connections between the same pair of vertices.
setOpacity: function(node,
value)
Sets the opacity of the specified DOM node to the given value in %.
mxGraphLayout.prototype.setOrthogonalEdge = function(edge,
value)
Disables or enables orthogonal end segments of the given edge.
mxGraph.prototype.setPanning = function(enabled)
Specifies if panning should be enabled.
mxPanningHandler.prototype.setPanningEnabled = function(value)
Sets panningEnabled.
mxCell.prototype.setParent = function(parent)
Sets the parent cell.
mxPanningHandler.prototype.setPinchEnabled = function(value)
Sets pinchEnabled.
mxGraph.prototype.setPortsEnabled = function(value)
Specifies if the ports should be enabled.
mxHandle.prototype.setPosition = function(bounds,
pt,
me)
Hooks for subclassers to update the style in the state.
setPrefixedStyle: function()
Adds the given style with the standard name and an optional vendor prefix for the current browser.
mxEdgeHandler.prototype.setPreviewColor = function(color)
Sets the color of the preview to the given value.
mxRectangle.prototype.setRect = function(x,
y,
w,
h)
Sets this rectangle to the specified values
mxGraph.prototype.setRecursiveResize = function(value)
Sets recursiveResize.
mxGraphHandler.prototype.setRemoveCellsFromParent = function(value)
Sets removeCellsFromParent.
mxGraphView.prototype.setRendering = function(value)
Sets rendering.
mxXmlRequest.prototype.setRequestHeaders = function(request,
params)
Sets the headers for the given request and parameters.
mxWindow.prototype.setResizable = function(resizable)
Sets if the window should be resizable.
mxGraph.prototype.setResizeContainer = function(value)
Sets resizeContainer.
mxSwimlaneManager.prototype.setResizeEnabled = function(value)
Sets resizeEnabled.
mxGraphModel.prototype.setRoot = function(root)
Sets the root of the model using mxRootChange and adds the change to the current transaction.
mxGraphView.prototype.setScale = function(value)
Sets the scale and fires a scale event before calling revalidate followed by mxGraph.sizeDidChange.
mxWindow.prototype.setScrollable = function(scrollable)
Sets if the window contents should be scrollable.
mxGraphHandler.prototype.setSelectEnabled = function(value)
Sets selectEnabled.
mxGraph.prototype.setSelectionCell = function(cell)
Sets the selection cell.
mxGraph.prototype.setSelectionCells = function(cells)
Sets the selection cell.
mxGraph.prototype.setSelectionModel = function(selectionModel)
Sets the mxSelectionModel that contains the selection.
mxAbstractCanvas2D.prototype.setShadow = function(enabled)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadow = function(value)
Enables or disables shadows.
mxAbstractCanvas2D.prototype.setShadowAlpha = function(value)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowAlpha = function(value)
Sets the current shadows alpha.
mxAbstractCanvas2D.prototype.setShadowColor = function(value)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowColor = function(value)
Sets the current shadow color.
mxAbstractCanvas2D.prototype.setShadowOffset = function(dx,
dy)
Enables or disables and configures the current shadow.
mxXmlCanvas2D.prototype.setShadowOffset = function(dx,
dy)
Sets the current shadow offset.
mxSpaceManager.prototype.setShiftDownwards = function(value)
Enables or disables event handling.
mxSpaceManager.prototype.setShiftRightwards = function(value)
Enables or disables event handling.
mxGraphSelectionModel.prototype.setSingleSelection = function(singleSelection)
Sets the singleSelection flag.
mxWindow.prototype.setSize = function(width,
height)
Sets the size of the window.
mxGraph.prototype.setSplitEnabled = function(value)
Specifies if the graph should allow dropping of cells onto or into other cells.
mxGraphView.prototype.setStates = function(value)
Sets states.
mxGuide.prototype.setStates = function(states)
Sets the mxCellStates that should be used for alignment.
mxEditor.prototype.setStatus = function (message)
Display the specified message in the status bar.
mxEditor.prototype.setStatusContainer = function (container)
Creates the status using the specified container.
mxAbstractCanvas2D.prototype.setStrokeColor = function(value)
Sets the current stroke color.
mxXmlCanvas2D.prototype.setStrokeColor = function(value)
Sets the current stroke color.
mxAbstractCanvas2D.prototype.setStrokeWidth = function(value)
Sets the current stroke width.
mxXmlCanvas2D.prototype.setStrokeWidth = function(value)
Sets the current stroke width.
mxCell.prototype.setStyle = function(style)
Sets the string to be used as the style.
mxGraphModel.prototype.setStyle = function(cell,
style)
Sets the style of the given mxCell using mxStyleChange and adds the change to the current transaction.
setStyle: function(style,
key,
value)
Adds or removes the given key, value pair to the style and returns the new style.
setStyleFlag: function(style,
key,
flag,
value)
Sets or removes the given key from the specified style and returns the new style.
mxGraph.prototype.setStylesheet = function(stylesheet)
Sets the mxStylesheet that defines the style.
mxGraph.prototype.setSwimlaneNesting = function(value)
Specifies if swimlanes can be nested by drag and drop.
mxGraph.prototype.setSwimlaneSelectionEnabled = function(value)
Specifies if swimlanes should be selected if the mouse is released over their content area.
mxCell.prototype.setTerminal = function(terminal,
isSource)
Sets the source or target terminal and returns the new terminal.
mxGraphModel.prototype.setTerminal = function(edge,
terminal,
isSource)
Sets the source or target terminal of the given mxCell using mxTerminalChange and adds the change to the current transaction.
mxGeometry.prototype.setTerminalPoint = function(point,
isSource)
Sets the sourcePoint or targetPoint to the given mxPoint and returns the new point.
mxGraphModel.prototype.setTerminals = function(edge,
source,
target)
Sets the source and target mxCell of the given mxCell in a single transaction using setTerminal for each end of the edge.
setTextContent: function(node,
text)
Sets the text content of the specified node.
mxWindow.prototype.setTitle = function(title)
Sets the window title to the given string.
mxEditor.prototype.setTitleContainer = function (container)
Creates a listener to update the inner HTML of the specified DOM node with the value of getTitle.
mxGraph.prototype.setTolerance = function(value)
Sets tolerance.
mxEditor.prototype.setToolbarContainer = function (container)
Initializes the toolbar for the given container.
mxGraph.prototype.setTooltips = function (enabled)
Specifies if tooltips should be enabled.
mxGraphView.prototype.setTranslate = function(dx,
dy)
Sets the translation and fires a translate event before calling revalidate followed by mxGraph.sizeDidChange.
mxShape.prototype.setTransparentBackgroundImage = function(node)
Sets a transparent background CSS style to catch all events.
mxCell.prototype.setValue = function(value)
Sets the user object of the cell.
mxGraphModel.prototype.setValue = function(cell,
value)
Sets the user object of then given mxCell using mxValueChange and adds the change to the current transaction.
mxCell.prototype.setVertex = function(vertex)
Specifies if the cell is a vertex.
mxGraph.prototype.setVertexLabelsMovable = function(value)
Sets vertexLabelsMovable.
mxCoordinateAssignment.prototype.setVertexLocation = function(cell)
Fixes the position of the specified vertex.
mxGraphLayout.prototype.setVertexLocation = function(cell,
x,
y)
Sets the new position of the given cell taking into account the size of the bounding box if useBoundingBox is true.
mxCell.prototype.setVisible = function(visible)
Specifies if the cell is visible.
mxGraphModel.prototype.setVisible = function(cell,
visible)
Sets the visible state of the given mxCell using mxVisibleChange and adds the change to the current transaction.
setVisible: function(visible)
Shows or hides the console.
mxHandle.prototype.setVisible = function(visible)
Shows or hides this handle.
mxWindow.prototype.setVisible = function(visible)
Shows or hides the window depending on the given flag.
mxCellState.prototype.setVisibleTerminalState = function (terminalState,
source)
Sets the visible source or target terminal state.
mxGraphAbstractHierarchyCell.prototype.setX = function(layer,
value)
Set the value of x for the specified layer
mxGraphAbstractHierarchyCell.prototype.setY = function(layer,
value)
Set the value of y for the specified layer
mxOutline.prototype.setZoomEnabled = function(value)
Enables or disables the zoom handling by showing or hiding the respective handle.
Specifies the x-offset of the shadow.
Specifies the y-offset of the shadow.
Defines the opacity for shadows.
Defines the color to be used to draw shadows in shapes and windows.
mxCellState.prototype.shape
Holds the mxShape that represents the cell graphically.
mxEdgeHandler.prototype.shape
Holds the mxShape that represents the preview edge.
mxGraphHandler.prototype.shape
Reference to the mxShape that represents the preview.
Name under which mxActor is registered in mxCellRenderer.
Name under which mxArrow is registered in mxCellRenderer.
Name under which mxCloud is registered in mxCellRenderer.
Name under which mxConnector is registered in mxCellRenderer.
Name under which mxCylinder is registered in mxCellRenderer.
Name under which mxDoubleEllipse is registered in mxCellRenderer.
Name under which mxEllipse is registered in mxCellRenderer.
Name under which mxHexagon is registered in mxCellRenderer.
Name under which mxImageShape is registered in mxCellRenderer.
Name under which mxLabel is registered in mxCellRenderer.
Name under which mxLine is registered in mxCellRenderer.
Name under which mxRectangleShape is registered in mxCellRenderer.
Name under which mxRhombus is registered in mxCellRenderer.
Name under which mxSwimlane is registered in mxCellRenderer.
Name under which mxTriangle is registered in mxCellRenderer.
mxShape.prototype.shapePointerEvents
Specifies if pointer events outside of shape should be handled.
mxRubberband.prototype.sharedDiv
Holds the DIV element which is used to display the rubberband.
mxSpaceManager.prototype.shiftCell = function(cell,
dx,
dy,
Ox0,
y0,
right,
bottom,
fx,
fy,
extendParent)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxSpaceManager.prototype.shiftDownwards
Specifies if event handling is enabled.
mxKeyHandler.prototype.shiftKeys
Maps from keycodes to functions for pressed shift keys.
mxSpaceManager.prototype.shiftRightwards
Specifies if event handling is enabled.
mxGraphHandler.prototype.shouldRemoveCellsFromParent = function(parent,
cells,
evt)
Returns true if the given cells should be removed from the parent for the specified mousereleased event.
mxCellStatePreview.prototype.show = function(visitor)
show: function()
Shows the console.
mxMorphing.prototype.show = function(move)
Shows the changes in the given mxCellStatePreview.
mxTooltipHandler.prototype.show = function(tip,
x,
y)
Shows the tooltip for the specified cell and optional index at the specified location (with a vertical offset of 10 pixels).
show: function(graph,
doc,
x0,
y0,
w,
h)
Copies the styles and the markup from the graph’s container into the given document and removes all cursor styles.
mxWindow.prototype.show = function()
Shows the window.
Specifies the event name for show.
Fires after the menu has been shown in popup.
Fires after the window is shown.
mxEditor.prototype.showHelp = function (tasks)
Shows the help window.
mxPopupMenu.prototype.showMenu = function()
Shows the menu.
mxEditor.prototype.showOutline = function ()
Shows the outline window.
mxEditor.prototype.showProperties = function (cell)
Creates and shows the properties dialog for the given cell.
mxPopupMenu.prototype.showSubmenu = function(parent,
row)
Shows the submenu inside the given parent row.
mxEditor.prototype.showTasks = function ()
Shows the tasks window.
mxOutline.prototype.showViewport
Specifies a viewport rectangle should be shown.
SideToSide: function (state,
source,
target,
points,
result)
Implements a vertical elbow edge.
mxUndoableEdit.prototype.significant
Specifies if the undoable change is significant.
mxXmlRequest.prototype.simulate = function(doc,
target)
Creates and posts a request to the given target URL using a dynamically created form inside the given document.
mxGraphSelectionModel.prototype.singleSelection
Specifies if only one selected item at a time is allowed.
mxVertexHandler.prototype.singleSizer
Specifies if only one sizer handle at the bottom, right corner should be used.
mxUndoManager.prototype.size
Maximum command history size.
Specifies the event name for size.
Fires after sizeDidChange was executed.
mxGraph.prototype.sizeDidChange = function()
Called when the size of the graph has changed.
mxOutline.prototype.sizerImage
Optional mxImage to be used for the sizer.
mxPopupMenu.prototype.smartSeparators
Specifies if separators should only be added if a menu item follows them.
mxGraph.prototype.snap = function(value)
Snaps the given numeric value to the grid if gridEnabled is true.
mxGraphHandler.prototype.snap = function(vector)
Snaps the given vector to the grid and returns the given mxPoint instance.
mxHandle.prototype.snapPoint = function(pt,
ignore)
Snaps the given point to the grid if ignore is false.
mxEdgeHandler.prototype.snapToTerminals
Specifies if waypoints should snap to the routing centers of terminals.
sortCells: function(cells,
ascending)
Sorts the given cells according to the order in the cell hierarchy.
mxCompactTreeLayout.prototype.sortEdges
Specifies if edges should be sorted according to the order of their opposite terminal cell in the model.
mxRadialTreeLayout.prototype.sortEdges
Specifies if edges should be sorted according to the order of their opposite terminal cell in the model.
mxCompactTreeLayout.prototype.sortOutgoingEdges = function(source,
edges)
Called if sortEdges is true to sort the array of outgoing edges in place.
mxCell.prototype.source
Reference to the source terminal.
mxGraphHierarchyEdge.prototype.source
The node this edge is sourced at
mxMultiplicity.prototype.source
Boolean that specifies if the rule is applied to the source or target terminal of an edge.
Reference to the source mxGraph.
mxUndoableEdit.prototype.source
Specifies the source of the edit.
mxGeometry.prototype.sourcePoint
Defines the source mxPoint of the edge.
mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK
High value to start source layering scan rank value from.
mxSwimlaneModel.prototype.SOURCESCANSTARTRANK
High value to start source layering scan rank value from.
mxCellHighlight.prototype.spacing
Specifies the spacing between the highlight for vertices and the vertex.
mxDefaultToolbar.prototype.spacing
Defines the spacing between existing and new vertices in gridSize units when a new vertex is dropped on an existing cell.
mxLabel.prototype.spacing
Default value for image spacing.
mxParallelEdgeLayout.prototype.spacing
Defines the spacing between the parallels.
mxPartitionLayout.prototype.spacing
Integer that specifies the absolute spacing in pixels between the children.
mxStackLayout.prototype.spacing
Specifies the spacing between the cells.
Specifies the event name for splitEdge.
Fires between begin- and endUpdate in splitEdge.
mxGraph.prototype.splitEdge = function(edge,
cells,
newEdge,
dx,
dy)
Splits the given edge by adding the newEdge between the previous source and the given cell and reconnecting the source of the given edge to the given cell.
mxGraph.prototype.splitEnabled
Specifies if dropping onto edges should be enabled.
mxImage.prototype.src
String that specifies the URL of the image.
mxConnectionHandler.prototype.start = function(state,
x,
y,
edgeState)
Starts a new connection for the given state and coordinates.
mxEdgeHandler.prototype.start = function(x,
y,
index)
Starts the handling of the mouse gesture.
mxGraphHandler.prototype.start = function(cell,
x,
y)
Starts the handling of the mouse gesture.
mxPanningHandler.prototype.start = function(me)
Starts panning at the given event.
mxRubberband.prototype.start = function(x,
y)
Sets the start point for the rubberband selection.
mxVertexHandler.prototype.start = function(x,
y,
index)
Starts the handling of the mouse gesture.
Fires when a new connection is being created by the user.
Specifies the event name for start.
Specifies the event name for startEdit.
Fires after the updateLevel was changed from 0 to 1.
Fires before a set of changes will be executed in undo or redo.
Specifies the event name for startEditing.
Fires before the in-place editor starts in startEditingAtCell.
mxAnimation.prototype.startAnimation = function()
Starts the animation by repeatedly invoking updateAnimation.
mxDragSource.prototype.startDrag = function(evt)
Creates the dragElement using createDragElement.
mxCellEditor.prototype.startEditing = function(cell,
trigger)
Starts the editor for the given cell.
mxGraph.prototype.startEditing = function(evt)
Calls startEditingAtCell using the given cell or the first selection cell.
mxGraph.prototype.startEditingAtCell = function(cell,
evt)
Fires a startEditing event and invokes mxCellEditor.startEditing on editor.
mxPanningHandler.prototype.startX
Holds the x-coordinate of the start point.
mxPanningHandler.prototype.startY
Holds the y-coordinate of the start point.
mxAbstractCanvas2D.prototype.state
Holds the current state.
mxCellHighlight.prototype.state
Reference to the mxCellState.
mxEdgeHandler.prototype.state
Reference to the mxCellState being modified.
mxMouseEvent.prototype.state
Holds the optional mxCellState associated with this event.
mxShape.prototype.state
Optional reference to the corresponding mxCellState.
mxVertexHandler.prototype.state
Reference to the mxCellState being modified.
mxAbstractCanvas2D.prototype.states
Stack of states.
mxGuide.prototype.states
Contains the mxCellStates that are used for alignment.
mxGraphView.prototype.stateValidated = function(state)
Invoked when a state has been processed in validatePoints.
mxEditor.prototype.status
DOM container that holds the statusbar.
mxShape.prototype.stencil
Holds the mxStencil that defines the shape.
mxShape.prototype.stencilPointerEvents
Specifies if pointer events outside of stencils should be handled.
mxMorphing.prototype.step
Contains the current step.
mxMorphing.prototype.steps
Specifies the maximum number of steps for the morphing.
Defines the step size to offset the cells after each paste operation.
mxAnimation.prototype.stopAnimation = function()
Stops the animation by deleting the timer and fires an mxEvent.DONE.
mxDragSource.prototype.stopDrag = function()
Invokes removeDragElement.
mxCellEditor.prototype.stopEditing = function(cancel)
Stops the editor and applies the value if cancel is false.
mxGraph.prototype.stopEditing = function(cancel)
Stops the current editing and fires a editingStopped event.
mxMorphing.prototype.stopRecursion = function(state,
delta)
Returns true if the animation should not recursively find more deltas for children if the given parent state has been animated.
mxSvgCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxVmlCanvas2D.prototype.stroke = function()
Paints the outline of the current path.
mxXmlCanvas2D.prototype.stroke = function()
Paints the outline of the current drawing buffer.
mxSvgCanvas2D.prototype.strokeTolerance
Adds transparent paths for strokes.
mxStencil.prototype.strokewidth
Holds the strokewidth direction from the description.
mxCell.prototype.style
Holds the style as a string of the form [(stylename|key=value);].
mxCellState.prototype.style
Contains an array of key, value pairs that represent the style of the cell.
mxShape.prototype.style
Optional reference to the style of the corresponding mxCellState.
Defines the key for the align style.
Defines the rounding factor for a rounded rectangle in percent (without the percent sign).
Defines the key for the aspect style.
Defines the key for the autosize style.
Defines the key for the bendable style.
Defines the key for the cloneable style.
Defines the key for the curved style.
Defines the key for the dashed style.
Defines the key for the deletable style.
Defines the key for the direction style.
Defines the key for the edge style.
Defines the key for the editable style.
Defines the key for the elbow style.
Defines the key for the end arrow marker.
Defines the key for the endFill style.
Defines the key for the endSize style.
Defines if the perimeter should be used to find the exact entry point along the perimeter of the target.
Defines the key for the horizontal relative coordinate connection point of an edge with its target terminal.
Defines the key for the vertical relative coordinate connection point of an edge with its target terminal.
Defines if the perimeter should be used to find the exact entry point along the perimeter of the source.
Defines the key for the horizontal relative coordinate connection point of an edge with its source terminal.
Defines the key for the vertical relative coordinate connection point of an edge with its source terminal.
Defines the key for the fill color.
Defines the key for the horizontal image flip.
Defines the key for the vertical flip.
Defines the key for the foldable style.
Defines the key for the fontColor style.
Defines the key for the fontFamily style.
Defines the key for the fontSize style (in points).
Defines the key for the fontStyle style.
Defines the key for the glass style.
Defines the key for the gradient direction.
Defines the key for the gradient color.
Defines the key for the horizontal style.
Defines the key for the image style.
Defines the key for the align style.
Defines the key for the image aspect style.
Defines the key for the image background color.
Defines the key for the image border color.
Defines the key for the imageHeight style.
Defines the key for the verticalAlign style.
Defines the key for the imageWidth style.
Defines the key for the indicatorColor style.
Defines the key for the indicatorDirection style.
Defines the key for the indicatorGradientColor style.
Defines the key for the indicator height.
Defines the key for the indicator image used within an mxLabel.
Defines the key for the indicator shape used within an mxLabel.
The defines the key for the spacing between the label and the indicator in mxLabel.
Defines the key for the indicator stroke color in mxLabel.
Defines the key for the indicator width.
Defines the key for the label background color.
Defines the key for the label border color.
Defines the key for the label padding, ie.
Defines the key for the horizontal label position of vertices.
Defines the key for the width of the label if the label position is not center.
Defines the key for the loop style.
Defines the key for the margin between the ellipses in the double ellipse shape.
Defines the key for the movable style.
Defines the key for the noEdgeStyle style.
Defines the key for the noLabel style.
Defines the key for the opacity style.
Defines if the connection points on either end of the edge should be computed so that the edge is vertical or horizontal if possible and if the point is not at a fixed location.
Defines the key for the overflow style.
Defines the key for the perimeter style.
Defines the key for the perimeter spacing.
Defines the direction(s) that edges are allowed to connect to cells in.
Define whether port constraint directions are rotated with vertex rotation.
Defines the key for the resizable style.
Defines the key for the rotatable style.
Defines the key for the rotation style.
Defines the key for the rounded style.
Defines the key for the horizontal routing center.
Defines the key for the vertical routing center.
Defines the key for the segment style.
Defines the key for the separatorColor style.
Defines the key for the shadow style.
Defines the key for the shape.
An experimental style for edges.
Defines the key for the source perimeter spacing.
Defines the ID of the cell that should be used for computing the perimeter point of the source for an edge.
Defines the key for the spacing.
Defines the key for the spacingBottom style The value represents the spacing, in pixels, added to the bottom side of a label in a vertex (style applies to vertices only).
Defines the key for the spacingLeft style.
Defines the key for the spacingRight style The value represents the spacing, in pixels, added to the right side of a label in a vertex (style applies to vertices only).
Defines the key for the spacingTop style.
Defines the key for the start arrow marker.
Defines the key for the startFill style.
Defines the key for the startSize style.
Defines the key for the strokeColor style.
Defines the key for the strokeWidth style.
Defines the key for the fill color of the swimlane background.
Defines the key for the swimlaneLine style.
Defines the key for the target perimeter spacing.
Defines the ID of the cell that should be used for computing the perimeter point of the target for an edge.
Defines the key for the text opacity style.
Defines the key for the verticalAlign style.
Defines the key for the vertical label position of vertices.
Defines the key for the white-space style.
this.styleEnabled
Stores the value of styleEnabled passed to the constructor.
mxGraphModel.prototype.styleForCellChanged = function(cell,
style)
Inner callback to update the style of the given mxCell using mxCell.setStyle and return the previous style.
Maps from names to cell styles.
mxGraph.prototype.stylesheet
Holds the mxStylesheet that defines the appearance of the cells.
mxPopupMenu.prototype.submenuImage
URL of the image to be used for the submenu icon.
submit: function(url,
params,
doc,
target)
Submits the given parameters to the specified URL using mxXmlRequest.simulate and returns the mxXmlRequest.
Specifies the event name for suspend.
mxOutline.prototype.suspended
Optional boolean flag to suspend updates.
mxShape.prototype.svgPointerEvents
Specifies if pointer events should be handled.
mxCylinder.prototype.svgStrokeTolerance
Sets stroke tolerance to 0 for SVG.
mxShape.prototype.svgStrokeTolerance
Event-tolerance for SVG strokes (in px).
mxGeometry.prototype.swap = function()
Swaps the x, y, width and height with the values stored in alternateBounds and puts the previous values into alternateBounds as a rectangle.
mxGraph.prototype.swapBounds = function(cell,
willCollapse)
Swaps the alternate and the actual bounds in the geometry of the given cell invoking updateAlternateBounds before carrying out the swap.
mxEditor.prototype.swapStyles = function (first,
second)
Swaps the styles for the given names in the graph’s stylesheet and refreshes the graph.
mxSwimlaneManager.prototype.swimlaneAdded = function(swimlane)
Updates the size of the given swimlane to match that of any existing siblings swimlanes.
mxGraph.prototype.swimlaneIndicatorColorAttribute
The attribute used to find the color for the indicator if the indicator color is set to ‘swimlane’.
mxGraph.prototype.swimlaneNesting
Specifies if nesting of swimlanes is allowed.
mxEditor.prototype.swimlaneRequired
Specifies if new cells must be inserted into an existing swimlane.
mxSwimlaneLayout.prototype.swimlanes
Holds the array of mxCell of the ordered swimlanes to lay out
mxGraph.prototype.swimlaneSelectionEnabled
Specifies if swimlanes should be selectable via the content if the mouse is released.
mxEditor.prototype.swimlaneSpacing
Specifies the spacing between swimlanes if automatic layout is turned on in layoutDiagram.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General17.html b/docs/js-api/index/General17.html index c456db79e..2969183ce 100644 --- a/docs/js-api/index/General17.html +++ b/docs/js-api/index/General17.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 table, mxForm
 TAP_AND_HOLD
 tapAndHold, mxGraph
 tapAndHoldDelay, mxGraph
 tapAndHoldEnabled, mxGraph
 tapAndHoldInProgress, mxGraph
 tapAndHoldValid, mxGraph
 target
 TARGET_HIGHLIGHT_COLOR, mxConstants
 targetConnectImage, mxConnectionHandler
 targetPoint, mxGeometry
 tasks, mxEditor
 tasksResource, mxEditor
 tasksTop, mxEditor
 tasksWindowImage, mxEditor
 temp, mxGraphAbstractHierarchyCell
 temperature, mxFastOrganicLayout
 template, mxObjectCodec
 templates, mxEditor
 Templates, mxEditor
 terminalDistance, mxCellState
 terminalForCellChanged, mxGraphModel
 text
 textarea, mxCellEditor
 textEnabled
 textNode, mxCellEditor
 textWidthPadding, mxText
 thread, mxAnimation
 tightenToSource
 timerAutoScroll, mxGraph
 title
 TOGGLE_CELLS
 toggleCells, mxGraph
 toggleCellStyle, mxGraph
 toggleCellStyleFlags, mxGraph
 toggleCellStyles, mxGraph
 tolerance
 toolbar
 tooltip, mxCellOverlay
 TOOLTIP_VERTICAL_OFFSET, mxConstants
 TopToBottom, mxEdgeStyle
 toRadians, mxUtils
 toString
 TRACE, mxLog
 transformControlPoint, mxGraphView
 translate
 TRANSLATE
 TRANSLATE_CONTROL_POINTS, mxGeometry
 translateCell, mxGraph
 translateState, mxCellStatePreview
 transpose, mxMedianHybridCrossingReduction
 traverse
 traverseAncestors
 treeLayout, mxEditor
 TrianglePerimeter, mxPerimeter
 trigger, mxCellEditor
 triggerX, mxPopupMenuHandler
 triggerY, mxPopupMenuHandler
 trim
 type, mxMultiplicity
 typeError, mxMultiplicity
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 table, mxForm
 TAP_AND_HOLD
 tapAndHold, mxGraph
 tapAndHoldDelay, mxGraph
 tapAndHoldEnabled, mxGraph
 tapAndHoldInProgress, mxGraph
 tapAndHoldValid, mxGraph
 target
 TARGET_HIGHLIGHT_COLOR, mxConstants
 targetConnectImage, mxConnectionHandler
 targetPoint, mxGeometry
 tasks, mxEditor
 tasksResource, mxEditor
 tasksTop, mxEditor
 tasksWindowImage, mxEditor
 temp, mxGraphAbstractHierarchyCell
 temperature, mxFastOrganicLayout
 template, mxObjectCodec
 templates, mxEditor
 Templates, mxEditor
 terminalDistance, mxCellState
 terminalForCellChanged, mxGraphModel
 text
 textarea, mxCellEditor
 textEnabled
 textNode, mxCellEditor
 textWidthPadding, mxText
 thread, mxAnimation
 tightenToSource
 timerAutoScroll, mxGraph
 title
 toDegree, mxUtils
 TOGGLE_CELLS
 toggleCells, mxGraph
 toggleCellStyle, mxGraph
 toggleCellStyleFlags, mxGraph
 toggleCellStyles, mxGraph
 tolerance
 toolbar
 tooltip, mxCellOverlay
 TOOLTIP_VERTICAL_OFFSET, mxConstants
 TopToBottom, mxEdgeStyle
 toRadians, mxUtils
 toString
 TRACE, mxLog
 transformControlPoint, mxGraphView
 translate
 TRANSLATE
 TRANSLATE_CONTROL_POINTS, mxGeometry
 translateCell, mxGraph
 translateState, mxCellStatePreview
 transpose, mxMedianHybridCrossingReduction
 traverse
 traverseAncestors
 treeLayout, mxEditor
 TrianglePerimeter, mxPerimeter
 trigger, mxCellEditor
 triggerX, mxPopupMenuHandler
 triggerY, mxPopupMenuHandler
 trim
 type, mxMultiplicity
 typeError, mxMultiplicity
-
mxForm.prototype.table
Holds the DOM node that represents the table.
Specifies the event name for tapAndHold.
Fires in tapAndHold if a tap and hold event was detected.
mxGraph.prototype.tapAndHold = function(me)
Handles the mxMouseEvent by highlighting the mxCellState.
mxGraph.prototype.tapAndHoldDelay
Specifies the time for a tap and hold.
mxGraph.prototype.tapAndHoldEnabled
Specifies if tap and hold should be used for starting connections on touch-based devices.
mxGraph.prototype.tapAndHoldInProgress
True if the timer for tap and hold events is running.
mxGraph.prototype.tapAndHoldValid
True as long as the timer is running and the touch events stay within the given tapAndHoldTolerance.
mxCell.prototype.target
Reference to the target terminal.
mxGraphHierarchyEdge.prototype.target
The node this edge targets
mxKeyHandler.prototype.target
Reference to the target DOM, that is, the DOM node where the key event listeners are installed.
Defines the color to be used for highlighting a target cell for a new or changed connection.
mxConnectionHandler.prototype.targetConnectImage
Specifies if the connect icon should be centered on the target state while connections are being previewed.
mxGeometry.prototype.targetPoint
Defines the target mxPoint of the edge.
mxEditor.prototype.tasks
Holds the mxWindow created in showTasks.
mxEditor.prototype.tasksResource
Specifies the resource key for the tasks window title.
mxEditor.prototype.tasksTop
Specifies the top coordinate of the tasks window in pixels.
mxEditor.prototype.tasksWindowImage
Icon for the tasks window.
mxGraphAbstractHierarchyCell.prototype.temp
Temporary variable for general use.
mxFastOrganicLayout.prototype.temperature
Temperature to limit displacement at later stages of layout.
mxObjectCodec.prototype.template
Holds the template object associated with this codec.
mxEditor.prototype.templates
Maps from names to protoype cells to be used in the toolbar for inserting new cells into the diagram.
mxCellState.prototype.terminalDistance
Caches the distance between the end points for an edge.
mxGraphModel.prototype.terminalForCellChanged = function(edge,
terminal,
isSource)
Inner helper function to update the terminal of the edge using mxCell.insertEdge and return the previous terminal.
mxCellState.prototype.text
Holds the mxText that represents the label of the cell.
mxSvgCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxVmlCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxXmlCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxCellEditor.prototype.textarea
Holds the input textarea.
mxSvgCanvas2D.prototype.textEnabled
Specifies if text output should be enabled.
mxVmlCanvas2D.prototype.textEnabled
Specifies if text output should be enabledetB.
mxXmlCanvas2D.prototype.textEnabled
Specifies if text output should be enabled.
mxCellEditor.prototype.textNode
Reference to the label DOM node that has been hidden.
mxText.prototype.textWidthPadding
Specifies the padding to be added to the text width for the bounding box.
mxAnimation.prototype.thread
Reference to the thread while the animation is running.
mxGraphHierarchyModel.prototype.tightenToSource
Whether or not to tighten the assigned ranks of vertices up towards the source cells.
mxHierarchicalLayout.prototype.tightenToSource
Whether or not to tighten the assigned ranks of vertices up towards the source cells.
mxSwimlaneLayout.prototype.tightenToSource
Whether or not to tighten the assigned ranks of vertices up towards the source cells.
mxGraph.prototype.timerAutoScroll
Specifies if timer-based autoscrolling should be used via mxPanningManager.
mxPrintPreview.prototype.title
Holds the title of the preview window.
mxWindow.prototype.title
Reference to the DOM node (TD) that contains the title.
Specifies the event name for toggleCells.
Fires between begin- and endUpdate in toggleCells.
mxGraph.prototype.toggleCells = function(show,
cells,
includeEdges)
Sets the visible state of the specified cells and all connected edges if includeEdges is true.
mxGraph.prototype.toggleCellStyle = function(key,
defaultValue,
cell)
Toggles the boolean value for the given key in the style of the given cell and returns the new value as 0 or 1.
mxGraph.prototype.toggleCellStyleFlags = function(key,
flag,
cells)
Toggles the given bit for the given key in the styles of the specified cells.
mxGraph.prototype.toggleCellStyles = function(key,
defaultValue,
cells)
Toggles the boolean value for the given key in the style of the given cells and returns the new value as 0 or 1.
mxEdgeHandler.prototype.tolerance
Optional tolerance for hit-detection in getHandleForEvent.
mxGraph.prototype.tolerance
Tolerance for a move to be handled as a single click.
mxVertexHandler.prototype.tolerance
Optional tolerance for hit-detection in getHandleForEvent.
mxDefaultToolbar.prototype.toolbar
Holds the internal mxToolbar.
mxEditor.prototype.toolbar
Holds a mxDefaultToolbar for displaying the toolbar.
mxCellOverlay.prototype.tooltip
Holds the optional string to be used as the tooltip.
Defines the vertical offset for the tooltip.
TopToBottom: function(state,
source,
target,
points,
result)
Implements a horizontal elbow edge.
toRadians: function(deg)
Converts the given degree to radians.
mxCellOverlay.prototype.toString = function()
Returns the textual representation of the overlay to be used as the tooltip.
toString: function(obj)
Returns a textual representation of the specified object.
Specified if the output for enter and leave should be visible in the console.
mxGraphView.prototype.transformControlPoint = function(state,
pt)
Transforms the given control point to an absolute point.
mxAbstractCanvas2D.prototype.translate = function(dx,
dy)
Translates the current state.
mxGeometry.prototype.translate = function(dx,
dy)
Translates the geometry by the specified amount.
mxGraphView.prototype.translate
mxPoint that specifies the current translation.
mxXmlCanvas2D.prototype.translate = function(dx,
dy)
Translates the output.
Specifies the event name for translate.
Fires after the translate was changed in setTranslate.
mxGeometry.prototype.TRANSLATE_CONTROL_POINTS
Global switch to translate the points in translate.
mxGraph.prototype.translateCell = function(cell,
dx,
dy)
Translates the geometry of the given cell and stores the new, translated geometry in the model as an atomic change.
mxCellStatePreview.prototype.translateState = function(state,
dx,
dy)
mxMedianHybridCrossingReduction.prototype.transpose = function(
   mainLoopIteration,
   model
)
Takes each possible adjacent cell pair on each rank and checks if swapping them around reduces the number of crossing
mxGraph.prototype.traverse = function(vertex,
directed,
func,
edge,
visited)
Traverses the (directed) graph invoking the given function for each visited vertex and edge.
mxGraphLayout.traverse = function(vertex,
directed,
func,
edge,
visited)
Traverses the (directed) graph invoking the given function for each visited vertex and edge.
mxHierarchicalLayout.prototype.traverseAncestors
Whether or not to drill into child cells and layout in reverse group order.
mxSwimlaneLayout.prototype.traverseAncestors
Whether or not to drill into child cells and layout in reverse group order.
mxEditor.prototype.treeLayout = function (cell,
horizontal)
Executes a vertical or horizontal compact tree layout using the specified cell as an argument.
TrianglePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a triangle perimeter.
mxCellEditor.prototype.trigger
Reference to the event that was used to start editing.
mxPopupMenuHandler.prototype.triggerX
X-coordinate of the mouse down event.
mxPopupMenuHandler.prototype.triggerY
Y-coordinate of the mouse down event.
mxUndoManager.prototype.trim = function()
Removes all pending steps after indexOfNextAdd from the history, invoking die on each edit.
trim: function(str,
chars)
Strips all whitespaces from both end of the string.
mxMultiplicity.prototype.type
Defines the type of the source or target terminal.
mxMultiplicity.prototype.typeError
Holds the localized error message to be displayed if the type of the neighbor for a connection does not match the rule.
+
mxForm.prototype.table
Holds the DOM node that represents the table.
Specifies the event name for tapAndHold.
Fires in tapAndHold if a tap and hold event was detected.
mxGraph.prototype.tapAndHold = function(me)
Handles the mxMouseEvent by highlighting the mxCellState.
mxGraph.prototype.tapAndHoldDelay
Specifies the time for a tap and hold.
mxGraph.prototype.tapAndHoldEnabled
Specifies if tap and hold should be used for starting connections on touch-based devices.
mxGraph.prototype.tapAndHoldInProgress
True if the timer for tap and hold events is running.
mxGraph.prototype.tapAndHoldValid
True as long as the timer is running and the touch events stay within the given tapAndHoldTolerance.
mxCell.prototype.target
Reference to the target terminal.
mxGraphHierarchyEdge.prototype.target
The node this edge targets
mxKeyHandler.prototype.target
Reference to the target DOM, that is, the DOM node where the key event listeners are installed.
Defines the color to be used for highlighting a target cell for a new or changed connection.
mxConnectionHandler.prototype.targetConnectImage
Specifies if the connect icon should be centered on the target state while connections are being previewed.
mxGeometry.prototype.targetPoint
Defines the target mxPoint of the edge.
mxEditor.prototype.tasks
Holds the mxWindow created in showTasks.
mxEditor.prototype.tasksResource
Specifies the resource key for the tasks window title.
mxEditor.prototype.tasksTop
Specifies the top coordinate of the tasks window in pixels.
mxEditor.prototype.tasksWindowImage
Icon for the tasks window.
mxGraphAbstractHierarchyCell.prototype.temp
Temporary variable for general use.
mxFastOrganicLayout.prototype.temperature
Temperature to limit displacement at later stages of layout.
mxObjectCodec.prototype.template
Holds the template object associated with this codec.
mxEditor.prototype.templates
Maps from names to protoype cells to be used in the toolbar for inserting new cells into the diagram.
mxCellState.prototype.terminalDistance
Caches the distance between the end points for an edge.
mxGraphModel.prototype.terminalForCellChanged = function(edge,
terminal,
isSource)
Inner helper function to update the terminal of the edge using mxCell.insertEdge and return the previous terminal.
mxCellState.prototype.text
Holds the mxText that represents the label of the cell.
mxSvgCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxVmlCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxXmlCanvas2D.prototype.text = function(x,
y,
w,
h,
str,
align,
valign,
wrap,
format,
overflow,
clip,
rotation)
Paints the given text.
mxCellEditor.prototype.textarea
Holds the input textarea.
mxSvgCanvas2D.prototype.textEnabled
Specifies if text output should be enabled.
mxVmlCanvas2D.prototype.textEnabled
Specifies if text output should be enabledetB.
mxXmlCanvas2D.prototype.textEnabled
Specifies if text output should be enabled.
mxCellEditor.prototype.textNode
Reference to the label DOM node that has been hidden.
mxText.prototype.textWidthPadding
Specifies the padding to be added to the text width for the bounding box.
mxAnimation.prototype.thread
Reference to the thread while the animation is running.
mxGraphHierarchyModel.prototype.tightenToSource
Whether or not to tighten the assigned ranks of vertices up towards the source cells.
mxHierarchicalLayout.prototype.tightenToSource
Whether or not to tighten the assigned ranks of vertices up towards the source cells.
mxSwimlaneLayout.prototype.tightenToSource
Whether or not to tighten the assigned ranks of vertices up towards the source cells.
mxGraph.prototype.timerAutoScroll
Specifies if timer-based autoscrolling should be used via mxPanningManager.
mxPrintPreview.prototype.title
Holds the title of the preview window.
mxWindow.prototype.title
Reference to the DOM node (TD) that contains the title.
toDegree: function(rad)
Converts the given radians to degree.
Specifies the event name for toggleCells.
Fires between begin- and endUpdate in toggleCells.
mxGraph.prototype.toggleCells = function(show,
cells,
includeEdges)
Sets the visible state of the specified cells and all connected edges if includeEdges is true.
mxGraph.prototype.toggleCellStyle = function(key,
defaultValue,
cell)
Toggles the boolean value for the given key in the style of the given cell and returns the new value as 0 or 1.
mxGraph.prototype.toggleCellStyleFlags = function(key,
flag,
cells)
Toggles the given bit for the given key in the styles of the specified cells.
mxGraph.prototype.toggleCellStyles = function(key,
defaultValue,
cells)
Toggles the boolean value for the given key in the style of the given cells and returns the new value as 0 or 1.
mxEdgeHandler.prototype.tolerance
Optional tolerance for hit-detection in getHandleForEvent.
mxGraph.prototype.tolerance
Tolerance for a move to be handled as a single click.
mxVertexHandler.prototype.tolerance
Optional tolerance for hit-detection in getHandleForEvent.
mxDefaultToolbar.prototype.toolbar
Holds the internal mxToolbar.
mxEditor.prototype.toolbar
Holds a mxDefaultToolbar for displaying the toolbar.
mxCellOverlay.prototype.tooltip
Holds the optional string to be used as the tooltip.
Defines the vertical offset for the tooltip.
TopToBottom: function(state,
source,
target,
points,
result)
Implements a horizontal elbow edge.
toRadians: function(deg)
Converts the given degree to radians.
mxCellOverlay.prototype.toString = function()
Returns the textual representation of the overlay to be used as the tooltip.
toString: function(obj)
Returns a textual representation of the specified object.
Specified if the output for enter and leave should be visible in the console.
mxGraphView.prototype.transformControlPoint = function(state,
pt)
Transforms the given control point to an absolute point.
mxAbstractCanvas2D.prototype.translate = function(dx,
dy)
Translates the current state.
mxGeometry.prototype.translate = function(dx,
dy)
Translates the geometry by the specified amount.
mxGraphView.prototype.translate
mxPoint that specifies the current translation.
mxXmlCanvas2D.prototype.translate = function(dx,
dy)
Translates the output.
Specifies the event name for translate.
Fires after the translate was changed in setTranslate.
mxGeometry.prototype.TRANSLATE_CONTROL_POINTS
Global switch to translate the points in translate.
mxGraph.prototype.translateCell = function(cell,
dx,
dy)
Translates the geometry of the given cell and stores the new, translated geometry in the model as an atomic change.
mxCellStatePreview.prototype.translateState = function(state,
dx,
dy)
mxMedianHybridCrossingReduction.prototype.transpose = function(
   mainLoopIteration,
   model
)
Takes each possible adjacent cell pair on each rank and checks if swapping them around reduces the number of crossing
mxGraph.prototype.traverse = function(vertex,
directed,
func,
edge,
visited)
Traverses the (directed) graph invoking the given function for each visited vertex and edge.
mxGraphLayout.traverse = function(vertex,
directed,
func,
edge,
visited)
Traverses the (directed) graph invoking the given function for each visited vertex and edge.
mxHierarchicalLayout.prototype.traverseAncestors
Whether or not to drill into child cells and layout in reverse group order.
mxSwimlaneLayout.prototype.traverseAncestors
Whether or not to drill into child cells and layout in reverse group order.
mxEditor.prototype.treeLayout = function (cell,
horizontal)
Executes a vertical or horizontal compact tree layout using the specified cell as an argument.
TrianglePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a triangle perimeter.
mxCellEditor.prototype.trigger
Reference to the event that was used to start editing.
mxPopupMenuHandler.prototype.triggerX
X-coordinate of the mouse down event.
mxPopupMenuHandler.prototype.triggerY
Y-coordinate of the mouse down event.
mxUndoManager.prototype.trim = function()
Removes all pending steps after indexOfNextAdd from the history, invoking die on each edit.
trim: function(str,
chars)
Strips all whitespaces from both end of the string.
mxMultiplicity.prototype.type
Defines the type of the source or target terminal.
mxMultiplicity.prototype.typeError
Holds the localized error message to be displayed if the type of the neighbor for a connection does not match the rule.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General18.html b/docs/js-api/index/General18.html index bbe935b1c..f6047171a 100644 --- a/docs/js-api/index/General18.html +++ b/docs/js-api/index/General18.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
U
 undo
 UNDO
 undoableEditHappened, mxUndoManager
 undoManager, mxEditor
 undone, mxUndoableEdit
 UNGROUP_CELLS
 ungroupCells, mxGraph
 union, mxVertexHandler
 unmark, mxCellMarker
 UP
 update
 UPDATE_CELL_SIZE
 updateAlternateBounds, mxGraph
 updateAnimation
 updateBaseUrl, mxUrlConverter
 updateBoundingBox
 updateBoundsFromPoints, mxShape
 updateCachedBounds, mxCellState
 updateCellSize, mxGraph
 updateCellState, mxGraphView
 updateContainerStyle, mxGraphView
 updateCurrentState, mxConnectionHandler
 updateCursor, mxGraphHandler
 updateDefaultMode, mxToolbar
 updateEdgeBounds, mxGraphView
 updateEdgeLabelOffset, mxGraphView
 updateEdgeParent, mxGraphModel
 updateEdgeParents, mxGraphModel
 updateEdgeState, mxGraphView
 updateFill, mxSvgCanvas2D
 updateFixedTerminalPoint, mxGraphView
 updateFixedTerminalPoints, mxGraphView
 updateFloatingTerminalPoint, mxGraphView
 updateFloatingTerminalPoints, mxGraphView
 updateFont
 updateGroupBounds
 updateHandler, mxLayoutManager
 updateHint
 updateHtmlCanvasSize, mxGraphView
 updateHtmlFilter, mxText
 updateHtmlFilters, mxShape
 updateHtmlTransform, mxText
 updateIcons, mxConnectionHandler
 updateLevel, mxGraphModel
 updateMinBounds, mxVertexHandler
 updateMouseEvent, mxGraph
 updateOnPan, mxOutline
 updatePageBreaks, mxGraph
 updateParentHighlight, mxVertexHandler
 updatePoints, mxGraphView
 updatePreviewShape, mxGraphHandler
 updatePreviewState
 updateSize, mxText
 updateStroke, mxSvgCanvas2D
 updateStrokeAttributes, mxSvgCanvas2D
 updateStyle, mxGraphView
 updateTransform, mxShape
 updateValue, mxText
 updateVertexLabelOffset, mxGraphView
 updateVertexState, mxGraphView
 updateVmlContainer
 updatingDocumentResource, mxGraphView
 updatingSelectionResource, mxGraphSelectionModel
 url, mxXmlRequest
 urlHelp, mxEditor
 urlImage, mxEditor
 urlPost, mxEditor
 useBoundingBox, mxGraphLayout
 useGrid, mxPanningHandler
 useGuidesForEvent, mxGraphHandler
 useInputOrigin, mxFastOrganicLayout
 useLeftButtonForPanning, mxPanningHandler
 useLeftButtonForPopup, mxPopupMenu
 usePopupTrigger, mxPanningHandler
 username, mxXmlRequest
 useScrollbarsForPanning, mxGraph
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
U
 undo
 UNDO
 undoableEditHappened, mxUndoManager
 undoManager, mxEditor
 undone, mxUndoableEdit
 UNGROUP_CELLS
 ungroupCells, mxGraph
 union, mxVertexHandler
 unmark, mxCellMarker
 UP
 update
 UPDATE_CELL_SIZE
 updateAlternateBounds, mxGraph
 updateAnimation
 updateBaseUrl, mxUrlConverter
 updateBoundingBox
 updateBoundsFromPoints, mxShape
 updateCachedBounds, mxCellState
 updateCellSize, mxGraph
 updateCellState, mxGraphView
 updateContainerStyle, mxGraphView
 updateCurrentState, mxConnectionHandler
 updateCursor, mxGraphHandler
 updateDefaultMode, mxToolbar
 updateEdgeBounds, mxGraphView
 updateEdgeLabelOffset, mxGraphView
 updateEdgeParent, mxGraphModel
 updateEdgeParents, mxGraphModel
 updateEdgeState, mxGraphView
 updateFill, mxSvgCanvas2D
 updateFixedTerminalPoint, mxGraphView
 updateFixedTerminalPoints, mxGraphView
 updateFloatingTerminalPoint, mxGraphView
 updateFloatingTerminalPoints, mxGraphView
 updateFont
 updateGroupBounds
 updateHandler, mxLayoutManager
 updateHint
 updateHtmlCanvasSize, mxGraphView
 updateHtmlFilter, mxText
 updateHtmlFilters, mxShape
 updateHtmlTransform, mxText
 updateIcons, mxConnectionHandler
 updateLevel, mxGraphModel
 updateMinBounds, mxVertexHandler
 updateMouseEvent, mxGraph
 updateOnPan, mxOutline
 updatePageBreaks, mxGraph
 updateParentHighlight, mxVertexHandler
 updatePoints, mxGraphView
 updatePreviewShape, mxGraphHandler
 updatePreviewState
 updateSize, mxText
 updateStroke, mxSvgCanvas2D
 updateStrokeAttributes, mxSvgCanvas2D
 updateStyle, mxGraphView
 updateTransform, mxShape
 updateValue, mxText
 updateVertexLabelOffset, mxGraphView
 updateVertexState, mxGraphView
 updateVmlContainer
 updatingDocumentResource, mxGraphView
 updatingSelectionResource, mxGraphSelectionModel
 url, mxXmlRequest
 urlHelp, mxEditor
 urlImage, mxEditor
 urlPost, mxEditor
 useBoundingBox, mxGraphLayout
 useGrid, mxPanningHandler
 useGuidesForEvent, mxGraphHandler
 useInputOrigin, mxFastOrganicLayout
 useLeftButtonForPanning, mxPanningHandler
 useLeftButtonForPopup, mxPopupMenu
 usePopupTrigger, mxPanningHandler
 username, mxXmlRequest
 useScrollbarsForPanning, mxGraph
-
mxEditor.prototype.undo = function ()
Undo the last change in graph.
mxUndoableEdit.prototype.undo = function()
Undoes all changes in this edit.
mxUndoManager.prototype.undo = function()
Undoes the last change.
Specifies the event name for undo.
Fires after the change was dispatched in endUpdate.
Fires after the selection was changed in changeSelection.
Fires after the root was changed in setCurrentRoot.
Fires afer a significant edit was undone in undo.
mxUndoManager.prototype.undoableEditHappened = function(undoableEdit)
Method to be called to add new undoable edits to the history.
mxEditor.prototype.undoManager
Holds an mxUndoManager for the command history.
mxUndoableEdit.prototype.undone
Specifies if this edit has been undone.
Specifies the event name for ungroupCells.
Fires between begin- and endUpdate in ungroupCells.
mxGraph.prototype.ungroupCells = function(cells)
Ungroups the given cells by moving the children the children to their parents parent and removing the empty groups.
mxVertexHandler.prototype.union = function(bounds,
dx,
dy,
index,
gridEnabled,
scale,
tr,
constrained)
Returns the union of the given bounds and location for the specified handle index.
mxCellMarker.prototype.unmark = function()
Hides the marker and fires a mark event.
Specifies the event name for up.
Fire if the current root is changed by executing an mxCurrentRootChange.
mxConstraintHandler.prototype.update = function(me,
source)
Updates the state of this handler based on the given mxMouseEvent.
mxOutline.prototype.update = function(revalidate)
Updates the outline.
mxRubberband.prototype.update = function(x,
y)
Sets currentX and currentY and calls repaint.
Specifies the event name for updateCellSize.
Fires between begin- and endUpdate in updateCellSize.
mxGraph.prototype.updateAlternateBounds = function(cell,
geo,
willCollapse)
Updates or sets the alternate bounds in the given geometry for the given cell depending on whether the cell is going to be collapsed.
mxAnimation.prototype.updateAnimation = function()
Hook for subclassers to implement the animation.
mxMorphing.prototype.updateAnimation = function()
Animation step.
mxUrlConverter.prototype.updateBaseUrl = function()
Private helper function to update the base URL.
mxShape.prototype.updateBoundingBox = function()
Updates the boundingBox for this shape using createBoundingBox and augmentBoundingBox and stores the result in boundingBox.
mxText.prototype.updateBoundingBox = function()
Updates the boundingBox for this shape using the given node and position.
mxShape.prototype.updateBoundsFromPoints = function()
Updates the bounds based on the points.
mxCellState.prototype.updateCachedBounds = function()
Updates the cellBounds and paintBounds.
mxGraph.prototype.updateCellSize = function(cell,
ignoreChildren)
Updates the size of the given cell in the model using cellSizeUpdated.
mxGraphView.prototype.updateCellState = function(state)
Updates the given mxCellState.
mxGraphView.prototype.updateContainerStyle = function(container)
Updates the style of the container after installing the SVG DOM elements.
mxConnectionHandler.prototype.updateCurrentState = function(me,
point)
Updates the current state for a given mouse move event by using the marker.
mxGraphHandler.prototype.updateCursor
Specifies if a move cursor should be shown if the mouse is over a movable cell.
mxToolbar.prototype.updateDefaultMode
Boolean indicating if the default mode should be the last selected switch mode or the first inserted switch mode.
mxGraphView.prototype.updateEdgeBounds = function(state)
Updates the given state using the bounding box of t he absolute points.
mxGraphView.prototype.updateEdgeLabelOffset = function(state)
Updates mxCellState.absoluteOffset for the given state.
mxGraphModel.prototype.updateEdgeParent = function(edge,
root)
Inner callback to update the parent of the specified mxCell to the nearest-common-ancestor of its two terminals.
mxGraphModel.prototype.updateEdgeParents = function(cell,
root)
Updates the parent for all edges that are connected to cell or one of its descendants using updateEdgeParent.
mxGraphView.prototype.updateEdgeState = function(state,
geo)
Validates the given cell state.
mxSvgCanvas2D.prototype.updateFill = function()
Transfers the stroke attributes from state to node.
mxGraphView.prototype.updateFixedTerminalPoint = function(edge,
terminal,
source,
constraint)
Sets the fixed source or target terminal point on the given edge.
mxGraphView.prototype.updateFixedTerminalPoints = function(edge,
source,
target)
Sets the initial absolute terminal points in the given state before the edge style is computed.
mxGraphView.prototype.updateFloatingTerminalPoint = function(edge,
start,
end,
source)
Updates the absolute terminal point in the given state for the given start and end state, where start is the source if source is true.
mxGraphView.prototype.updateFloatingTerminalPoints = function(state,
source,
target)
Updates the terminal points in the given state after the edge style was computed for the edge.
mxSvgCanvas2D.prototype.updateFont = function(node)
Updates the text properties for the given node.
mxText.prototype.updateFont = function(node)
Updates the HTML node(s) to reflect the latest bounds and scale.
mxGraph.prototype.updateGroupBounds = function(cells,
border,
moveGroup,
topBorder,
rightBorder,
bottomBorder,
leftBorder)
Updates the bounds of the given groups to include all children and returns the passed-in cells.
mxSwimlaneLayout.prototype.updateGroupBounds = function()
Updates the bounds of the given array of groups so that it includes all child vertices.
mxLayoutManager.prototype.updateHandler
Holds the function that handles the endUpdate event.
mxEdgeHandler.prototype.updateHint = function(me,
point)
Hook for subclassers do show details while the handler is active.
mxGraphHandler.prototype.updateHint = function(me)
Hook for subclassers do show details while the handler is active.
mxVertexHandler.prototype.updateHint = function(me)
Hook for subclassers do show details while the handler is active.
mxGraphView.prototype.updateHtmlCanvasSize = function(width,
height)
Updates the size of the HTML canvas.
mxText.prototype.updateHtmlFilter = function()
Rotated text rendering quality is bad for IE9 quirks/IE8 standards
mxShape.prototype.updateHtmlFilters = function(node)
Allow optimization by replacing VML with HTML.
mxText.prototype.updateHtmlTransform = function()
Returns the spacing as an mxPoint.
mxConnectionHandler.prototype.updateIcons = function(state,
icons,
me)
Hook to update the icon position(s) based on a mouseOver event.
mxGraphModel.prototype.updateLevel
Counter for the depth of nested transactions.
mxVertexHandler.prototype.updateMinBounds = function()
Initializes the shapes required for this vertex handler.
mxGraph.prototype.updateMouseEvent = function(me)
Sets the graphX and graphY properties if the given mxMouseEvent if required and returned the event.
mxOutline.prototype.updateOnPan
Specifies if update should be called for mxEvent.PAN in the source graph.
mxGraph.prototype.updatePageBreaks = function(visible,
width,
height)
Invokes from sizeDidChange to redraw the page breaks.
mxVertexHandler.prototype.updateParentHighlight = function()
Updates the highlight of the parent if parentHighlightEnabled is true.
mxGraphView.prototype.updatePoints = function(edge,
points,
source,
target)
Updates the absolute points in the given state using the specified array of mxPoints as the relative points.
mxGraphHandler.prototype.updatePreviewShape = function()
Updates the bounds of the preview shape.
mxEdgeSegmentHandler.prototype.updatePreviewState = function(edge,
point,
terminalState,
me)
Overridden to perform optimization of the edge style result.
mxEdgeHandler.prototype.updatePreviewState = function(edge,
point,
terminalState,
me)
Updates the given preview state taking into account the state of the constraint handler.
mxText.prototype.updateSize = function(node,
enableWrap)
Updates the HTML node(s) to reflect the latest bounds and scale.
mxSvgCanvas2D.prototype.updateStroke = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.updateStrokeAttributes = function()
Transfers the stroke attributes from state to node.
mxGraphView.prototype.updateStyle
Specifies if the style should be updated in each validation step.
mxShape.prototype.updateTransform = function(c,
x,
y,
w,
h)
Sets the scale and rotation on the given canvas.
mxText.prototype.updateValue = function()
Updates the HTML node(s) to reflect the latest bounds and scale.
mxGraphView.prototype.updateVertexLabelOffset = function(state)
Updates the absoluteOffset of the given vertex cell state.
mxGraphView.prototype.updateVertexState = function(state,
geo)
Validates the given cell state.
mxShape.prototype.updateVmlContainer = function()
Updates the bounds of the VML container.
mxText.prototype.updateVmlContainer = function()
Sets the width and height of the container to 1px.
Specifies the resource key for the status message while the document is being updated.
mxGraphSelectionModel.prototype.updatingSelectionResource
Specifies the resource key for the status message while the selection is being updated.
mxXmlRequest.prototype.url
Holds the target URL of the request.
mxEditor.prototype.urlHelp
Specifies the URL to be used for the contents of the Online Help window.
mxEditor.prototype.urlImage
Specifies the URL to be used for creating a bitmap of the graph in the image action.
mxEditor.prototype.urlPost
Specifies the URL to be used for posting the diagram to a backend in save.
mxGraphLayout.prototype.useBoundingBox
Boolean indicating if the bounding box of the label should be used if its available.
mxPanningHandler.prototype.useGrid
Specifies if the panning steps should be aligned to the grid size.
mxGraphHandler.prototype.useGuidesForEvent = function(me)
Returns true if the guides should be used for the given mxMouseEvent.
mxFastOrganicLayout.prototype.useInputOrigin
Specifies if the top left corner of the input cells should be the origin of the layout result.
mxPanningHandler.prototype.useLeftButtonForPanning
Specifies if panning should be active for the left mouse button.
mxPopupMenu.prototype.useLeftButtonForPopup
Specifies if popupmenus should be activated by clicking the left mouse button.
mxPanningHandler.prototype.usePopupTrigger
Specifies if mxEvent.isPopupTrigger should also be used for panning.
mxXmlRequest.prototype.username
Specifies the username to be used for authentication.
mxGraph.prototype.useScrollbarsForPanning
Specifies if scrollbars should be used for panning in panGraph if any scrollbars are available.
+
mxEditor.prototype.undo = function ()
Undo the last change in graph.
mxUndoableEdit.prototype.undo = function()
Undoes all changes in this edit.
mxUndoManager.prototype.undo = function()
Undoes the last change.
Specifies the event name for undo.
Fires after the change was dispatched in endUpdate.
Fires after the selection was changed in changeSelection.
Fires after the root was changed in setCurrentRoot.
Fires afer a significant edit was undone in undo.
mxUndoManager.prototype.undoableEditHappened = function(undoableEdit)
Method to be called to add new undoable edits to the history.
mxEditor.prototype.undoManager
Holds an mxUndoManager for the command history.
mxUndoableEdit.prototype.undone
Specifies if this edit has been undone.
Specifies the event name for ungroupCells.
Fires between begin- and endUpdate in ungroupCells.
mxGraph.prototype.ungroupCells = function(cells)
Ungroups the given cells by moving the children the children to their parents parent and removing the empty groups.
mxVertexHandler.prototype.union = function(bounds,
dx,
dy,
index,
gridEnabled,
scale,
tr,
constrained)
Returns the union of the given bounds and location for the specified handle index.
mxCellMarker.prototype.unmark = function()
Hides the marker and fires a mark event.
Specifies the event name for up.
Fire if the current root is changed by executing an mxCurrentRootChange.
mxConstraintHandler.prototype.update = function(me,
source)
Updates the state of this handler based on the given mxMouseEvent.
mxOutline.prototype.update = function(revalidate)
Updates the outline.
mxRubberband.prototype.update = function(x,
y)
Sets currentX and currentY and calls repaint.
Specifies the event name for updateCellSize.
Fires between begin- and endUpdate in updateCellSize.
mxGraph.prototype.updateAlternateBounds = function(cell,
geo,
willCollapse)
Updates or sets the alternate bounds in the given geometry for the given cell depending on whether the cell is going to be collapsed.
mxAnimation.prototype.updateAnimation = function()
Hook for subclassers to implement the animation.
mxMorphing.prototype.updateAnimation = function()
Animation step.
mxUrlConverter.prototype.updateBaseUrl = function()
Private helper function to update the base URL.
mxShape.prototype.updateBoundingBox = function()
Updates the boundingBox for this shape using createBoundingBox and augmentBoundingBox and stores the result in boundingBox.
mxText.prototype.updateBoundingBox = function()
Updates the boundingBox for this shape using the given node and position.
mxShape.prototype.updateBoundsFromPoints = function()
Updates the bounds based on the points.
mxCellState.prototype.updateCachedBounds = function()
Updates the cellBounds and paintBounds.
mxGraph.prototype.updateCellSize = function(cell,
ignoreChildren)
Updates the size of the given cell in the model using cellSizeUpdated.
mxGraphView.prototype.updateCellState = function(state)
Updates the given mxCellState.
mxGraphView.prototype.updateContainerStyle = function(container)
Updates the style of the container after installing the SVG DOM elements.
mxConnectionHandler.prototype.updateCurrentState = function(me,
point)
Updates the current state for a given mouse move event by using the marker.
mxGraphHandler.prototype.updateCursor
Specifies if a move cursor should be shown if the mouse is over a movable cell.
mxToolbar.prototype.updateDefaultMode
Boolean indicating if the default mode should be the last selected switch mode or the first inserted switch mode.
mxGraphView.prototype.updateEdgeBounds = function(state)
Updates the given state using the bounding box of t he absolute points.
mxGraphView.prototype.updateEdgeLabelOffset = function(state)
Updates mxCellState.absoluteOffset for the given state.
mxGraphModel.prototype.updateEdgeParent = function(edge,
root)
Inner callback to update the parent of the specified mxCell to the nearest-common-ancestor of its two terminals.
mxGraphModel.prototype.updateEdgeParents = function(cell,
root)
Updates the parent for all edges that are connected to cell or one of its descendants using updateEdgeParent.
mxGraphView.prototype.updateEdgeState = function(state,
geo)
Validates the given cell state.
mxSvgCanvas2D.prototype.updateFill = function()
Transfers the stroke attributes from state to node.
mxGraphView.prototype.updateFixedTerminalPoint = function(edge,
terminal,
source,
constraint)
Sets the fixed source or target terminal point on the given edge.
mxGraphView.prototype.updateFixedTerminalPoints = function(edge,
source,
target)
Sets the initial absolute terminal points in the given state before the edge style is computed.
mxGraphView.prototype.updateFloatingTerminalPoint = function(edge,
start,
end,
source)
Updates the absolute terminal point in the given state for the given start and end state, where start is the source if source is true.
mxGraphView.prototype.updateFloatingTerminalPoints = function(state,
source,
target)
Updates the terminal points in the given state after the edge style was computed for the edge.
mxSvgCanvas2D.prototype.updateFont = function(node)
Updates the text properties for the given node.
mxText.prototype.updateFont = function(node)
Updates the HTML node(s) to reflect the latest bounds and scale.
mxGraph.prototype.updateGroupBounds = function(cells,
border,
moveGroup,
topBorder,
rightBorder,
bottomBorder,
leftBorder)
Updates the bounds of the given groups to include all children and returns the passed-in cells.
mxSwimlaneLayout.prototype.updateGroupBounds = function()
Updates the bounds of the given array of groups so that it includes all child vertices.
mxLayoutManager.prototype.updateHandler
Holds the function that handles the endUpdate event.
mxEdgeHandler.prototype.updateHint = function(me,
point)
Hook for subclassers do show details while the handler is active.
mxGraphHandler.prototype.updateHint = function(me)
Hook for subclassers do show details while the handler is active.
mxVertexHandler.prototype.updateHint = function(me)
Hook for subclassers do show details while the handler is active.
mxGraphView.prototype.updateHtmlCanvasSize = function(width,
height)
Updates the size of the HTML canvas.
mxText.prototype.updateHtmlFilter = function()
Rotated text rendering quality is bad for IE9 quirks/IE8 standards
mxShape.prototype.updateHtmlFilters = function(node)
Allow optimization by replacing VML with HTML.
mxText.prototype.updateHtmlTransform = function()
Returns the spacing as an mxPoint.
mxConnectionHandler.prototype.updateIcons = function(state,
icons,
me)
Hook to update the icon position(s) based on a mouseOver event.
mxGraphModel.prototype.updateLevel
Counter for the depth of nested transactions.
mxVertexHandler.prototype.updateMinBounds = function()
Initializes the shapes required for this vertex handler.
mxGraph.prototype.updateMouseEvent = function(me)
Sets the graphX and graphY properties if the given mxMouseEvent if required and returned the event.
mxOutline.prototype.updateOnPan
Specifies if update should be called for mxEvent.PAN in the source graph.
mxGraph.prototype.updatePageBreaks = function(visible,
width,
height)
Invokes from sizeDidChange to redraw the page breaks.
mxVertexHandler.prototype.updateParentHighlight = function()
Updates the highlight of the parent if parentHighlightEnabled is true.
mxGraphView.prototype.updatePoints = function(edge,
points,
source,
target)
Updates the absolute points in the given state using the specified array of mxPoints as the relative points.
mxGraphHandler.prototype.updatePreviewShape = function()
Updates the bounds of the preview shape.
mxEdgeSegmentHandler.prototype.updatePreviewState = function(edge,
point,
terminalState,
me)
Overridden to perform optimization of the edge style result.
mxEdgeHandler.prototype.updatePreviewState = function(edge,
point,
terminalState,
me)
Updates the given preview state taking into account the state of the constraint handler.
mxText.prototype.updateSize = function(node,
enableWrap)
Updates the HTML node(s) to reflect the latest bounds and scale.
mxSvgCanvas2D.prototype.updateStroke = function()
Transfers the stroke attributes from state to node.
mxSvgCanvas2D.prototype.updateStrokeAttributes = function()
Transfers the stroke attributes from state to node.
mxGraphView.prototype.updateStyle
Specifies if the style should be updated in each validation step.
mxShape.prototype.updateTransform = function(c,
x,
y,
w,
h)
Sets the scale and rotation on the given canvas.
mxText.prototype.updateValue = function()
Updates the HTML node(s) to reflect the latest bounds and scale.
mxGraphView.prototype.updateVertexLabelOffset = function(state)
Updates the absoluteOffset of the given vertex cell state.
mxGraphView.prototype.updateVertexState = function(state,
geo)
Validates the given cell state.
mxShape.prototype.updateVmlContainer = function()
Updates the bounds of the VML container.
mxText.prototype.updateVmlContainer = function()
Sets the width and height of the container to 1px.
Specifies the resource key for the status message while the document is being updated.
mxGraphSelectionModel.prototype.updatingSelectionResource
Specifies the resource key for the status message while the selection is being updated.
mxXmlRequest.prototype.url
Holds the target URL of the request.
mxEditor.prototype.urlHelp
Specifies the URL to be used for the contents of the Online Help window.
mxEditor.prototype.urlImage
Specifies the URL to be used for creating a bitmap of the graph in the image action.
mxEditor.prototype.urlPost
Specifies the URL to be used for posting the diagram to a backend in save.
mxGraphLayout.prototype.useBoundingBox
Boolean indicating if the bounding box of the label should be used if its available.
mxPanningHandler.prototype.useGrid
Specifies if the panning steps should be aligned to the grid size.
mxGraphHandler.prototype.useGuidesForEvent = function(me)
Returns true if the guides should be used for the given mxMouseEvent.
mxFastOrganicLayout.prototype.useInputOrigin
Specifies if the top left corner of the input cells should be the origin of the layout result.
mxPanningHandler.prototype.useLeftButtonForPanning
Specifies if panning should be active for the left mouse button.
mxPopupMenu.prototype.useLeftButtonForPopup
Specifies if popupmenus should be activated by clicking the left mouse button.
mxPanningHandler.prototype.usePopupTrigger
Specifies if mxEvent.isPopupTrigger should also be used for panning.
mxXmlRequest.prototype.username
Specifies the username to be used for authentication.
mxGraph.prototype.useScrollbarsForPanning
Specifies if scrollbars should be used for panning in panGraph if any scrollbars are available.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General19.html b/docs/js-api/index/General19.html index 1a918bdbc..e648be788 100644 --- a/docs/js-api/index/General19.html +++ b/docs/js-api/index/General19.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
V
 VALID_COLOR, mxConstants
 validate, mxGraphView
 validateBackground, mxGraphView
 validateBackgroundImage, mxGraphView
 validateBackgroundPage, mxGraphView
 validateCell
 validateCellState, mxGraphView
 validateConnection
 validateEdge, mxGraph
 validateGraph, mxGraph
 validating, mxEditor
 Validation, mxGraph
 validationAlert, mxGraph
 validColor, mxCellMarker
 validNeighbors, mxMultiplicity
 validNeighborsAllowed, mxMultiplicity
 validState, mxCellMarker
 value
 valueChanged, mxCell
 valueForCellChanged, mxGraphModel
 values, mxStyleRegistry
 Variables
MedianCellSortermxAbstractCanvas2DmxAnimationmxAutoSaveManagermxCellmxCellEditormxCellHighlightmxCellMarkermxCellOverlaymxCellPathmxCellRenderermxCellStatemxCellStatePreviewmxCircleLayoutmxClientmxClipboardmxCodecmxCodecRegistrymxCompactTreeLayoutmxCompositeLayoutmxConnectionConstraintmxConstantsmxConstraintHandlermxCoordinateAssignmentmxCylindermxDefaultKeyHandlermxDefaultPopupMenumxDefaultToolbarmxDefaultToolbarCodecmxDoubleEllipsemxDragSourcemxEdgeHandlermxElbowEdgeHandlermxEventmxEventObjectmxEventSourcemxFastOrganicLayoutmxFormmxGeometrymxGraphmxGraphAbstractHierarchyCellmxGraphHandlermxGraphHierarchyEdgemxGraphHierarchyModelmxGraphHierarchyNodemxGraphLayoutmxGraphModelmxGraphSelectionModelmxGraphViewmxGuidemxHierarchicalLayoutmxImagemxImageBundlemxImageExportmxImageShapemxKeyHandlermxLabelmxLayoutManagermxLogmxMarkermxMedianHybridCrossingReductionmxMinimumCycleRemovermxMorphingmxMouseEventmxMultiplicitymxObjectCodecmxObjectIdentitymxOutlinemxPanningHandlermxPanningManagermxParallelEdgeLayoutmxPartitionLayoutmxPointmxPopupMenumxPopupMenuHandlermxPrintPreviewmxRadialTreeLayoutmxRectanglemxResourcesmxRubberbandmxShapemxSpaceManagermxStackLayoutmxStencilmxStyleRegistrymxStylesheetCodecmxSvgCanvas2DmxSwimlanemxSwimlaneLayoutmxSwimlaneManagermxSwimlaneModelmxSwimlaneOrderingmxTemporaryCellStatesmxTextmxToolbarmxTooltipHandlermxUndoableEditmxUndoManagermxUrlConvertermxUtilsmxVertexHandlermxVmlCanvas2DmxWindowmxXmlCanvas2DmxXmlRequestWeightedCellSorter
 VERSION, mxClient
 vertex, mxCell
 VERTEX_SELECTION_COLOR, mxConstants
 VERTEX_SELECTION_STROKEWIDTH, mxConstants
 vertexArray, mxFastOrganicLayout
 vertexLabelsMovable, mxGraph
 vertexMapper
 vertical, mxGuide
 verticalAlign, mxCellOverlay
 verticalLayout, mxCompactTreeLayout
 verticalOffset, mxVertexHandler
 verticalTextRotation, mxText
 view
 virtualBendsEnabled, mxEdgeHandler
 visible
 visibleSourceState, mxCellState
 visibleStateForCellChanged, mxGraphModel
 visibleTargetState, mxCellState
 visit
 visited
 VML_PREFIX, mxClient
 vmlScale
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
V
 VALID_COLOR, mxConstants
 validate, mxGraphView
 validateBackground, mxGraphView
 validateBackgroundImage, mxGraphView
 validateBackgroundPage, mxGraphView
 validateCell
 validateCellState, mxGraphView
 validateConnection
 validateEdge, mxGraph
 validateGraph, mxGraph
 validating, mxEditor
 Validation, mxGraph
 validationAlert, mxGraph
 validColor, mxCellMarker
 validNeighbors, mxMultiplicity
 validNeighborsAllowed, mxMultiplicity
 validState, mxCellMarker
 value
 valueChanged, mxCell
 valueForCellChanged, mxGraphModel
 values, mxStyleRegistry
 Variables
MedianCellSortermxAbstractCanvas2DmxAnimationmxAutoSaveManagermxCellmxCellEditormxCellHighlightmxCellMarkermxCellOverlaymxCellPathmxCellRenderermxCellStatemxCellStatePreviewmxCircleLayoutmxClientmxClipboardmxCodecmxCodecRegistrymxCompactTreeLayoutmxCompositeLayoutmxConnectionConstraintmxConstantsmxConstraintHandlermxCoordinateAssignmentmxCylindermxDefaultKeyHandlermxDefaultPopupMenumxDefaultToolbarmxDefaultToolbarCodecmxDoubleEllipsemxDragSourcemxEdgeHandlermxElbowEdgeHandlermxEventmxEventObjectmxEventSourcemxFastOrganicLayoutmxFormmxGeometrymxGraphmxGraphAbstractHierarchyCellmxGraphHandlermxGraphHierarchyEdgemxGraphHierarchyModelmxGraphHierarchyNodemxGraphLayoutmxGraphModelmxGraphSelectionModelmxGraphViewmxGuidemxHierarchicalLayoutmxImagemxImageBundlemxImageExportmxImageShapemxKeyHandlermxLabelmxLayoutManagermxLogmxMarkermxMedianHybridCrossingReductionmxMinimumCycleRemovermxMorphingmxMouseEventmxMultiplicitymxObjectCodecmxObjectIdentitymxOutlinemxPanningHandlermxPanningManagermxParallelEdgeLayoutmxPartitionLayoutmxPointmxPopupMenumxPopupMenuHandlermxPrintPreviewmxRadialTreeLayoutmxRectanglemxResourcesmxRubberbandmxShapemxSpaceManagermxStackLayoutmxStencilmxStyleRegistrymxStylesheetCodecmxSvgCanvas2DmxSwimlanemxSwimlaneLayoutmxSwimlaneManagermxSwimlaneModelmxSwimlaneOrderingmxTemporaryCellStatesmxTextmxToolbarmxTooltipHandlermxUndoableEditmxUndoManagermxUrlConvertermxUtilsmxVertexHandlermxVmlCanvas2DmxWindowmxXmlCanvas2DmxXmlRequestWeightedCellSorter
 VERSION, mxClient
 vertex, mxCell
 VERTEX_SELECTION_COLOR, mxConstants
 VERTEX_SELECTION_STROKEWIDTH, mxConstants
 vertexArray, mxFastOrganicLayout
 vertexLabelsMovable, mxGraph
 vertexMapper
 vertical, mxGuide
 verticalAlign, mxCellOverlay
 verticalLayout, mxCompactTreeLayout
 verticalOffset, mxVertexHandler
 verticalTextRotation, mxText
 view
 virtualBendsEnabled, mxEdgeHandler
 visible
 visibleSourceState, mxCellState
 visibleStateForCellChanged, mxGraphModel
 visibleTargetState, mxCellState
 visit
 visited
 VML_PREFIX, mxClient
 vmlScale
-
Defines the color to be used for the coloring valid connection previews.
mxGraphView.prototype.validate = function(cell)
Calls validateCell and validateCellState and updates the graphBounds using getBoundingBox.
mxGraphView.prototype.validateBackground = function()
Calls validateBackgroundImage and validateBackgroundPage.
mxGraphView.prototype.validateBackgroundImage = function()
Validates the background image.
mxGraphView.prototype.validateBackgroundPage = function()
Validates the background page.
mxGraph.prototype.validateCell = function(cell,
context)
Hook method for subclassers to return an error message for the given cell and validation context.
mxGraphView.prototype.validateCell = function(cell,
visible)
Recursively creates the cell state for the given cell if visible is true and the given cell is visible.
mxGraphView.prototype.validateCellState = function(cell,
recurse)
Validates and repaints the mxCellState for the given mxCell.
mxConnectionHandler.prototype.validateConnection = function(source,
target)
Returns the error message or an empty string if the connection for the given source target pair is not valid.
mxEdgeHandler.prototype.validateConnection = function(source,
target)
Returns the error message or an empty string if the connection for the given source, target pair is not valid.
mxGraph.prototype.validateEdge = function(edge,
source,
target)
Hook method for subclassers to return an error message for the given edge and terminals.
mxGraph.prototype.validateGraph = function(cell,
context)
Validates the graph by validating each descendant of the given cell or the root of the model.
mxEditor.prototype.validating
Specifies if mxGraph.validateGraph should automatically be invoked after each change.
mxGraph.prototype.validationAlert = function(message)
Displays the given validation error in a dialog.
mxCellMarker.prototype.validColor
Holds the valid marker color.
mxMultiplicity.prototype.validNeighbors
Holds an array of strings that specify the type of neighbor for which this rule applies.
mxMultiplicity.prototype.validNeighborsAllowed
Boolean indicating if the list of validNeighbors are those that are allowed for this rule or those that are not allowed for this rule.
mxCellMarker.prototype.validState
Holds the marked mxCellState if it is valid.
mxCell.prototype.value
Holds the user object.
mxMultiplicity.prototype.value
Optional string that specifies the value of the attribute to be passed to mxUtils.isNode to check if the rule applies to a cell.
mxCell.prototype.valueChanged = function(newValue)
Changes the user object after an in-place edit and returns the previous value.
mxGraphModel.prototype.valueForCellChanged = function(cell,
value)
Inner callback to update the user object of the given mxCell using mxCell.valueChanged and return the previous value, that is, the return value of mxCell.valueChanged.
Maps from strings to objects.
Contains the current version of the mxGraph library.
mxCell.prototype.vertex
Specifies whether the cell is a vertex.
Defines the color to be used for the selection border of vertices.
Defines the strokewidth to be used for vertex selections.
mxFastOrganicLayout.prototype.vertexArray
An array of all vertices to be laid out.
mxGraph.prototype.vertexLabelsMovable
Specifies the return value for vertices in isLabelMovable.
mxGraphHierarchyModel.prototype.vertexMapper
Map from graph vertices to internal model nodes.
mxSwimlaneModel.prototype.vertexMapper
Map from graph vertices to internal model nodes.
mxGuide.prototype.vertical
Specifies if vertical guides are enabled.
mxCellOverlay.prototype.verticalAlign
Holds the vertical alignment for the overlay.
mxCompactTreeLayout.prototype.verticalLayout = function(node,
parent,
x0,
y0,
bounds)
mxVertexHandler.prototype.verticalOffset
The horizontal offset for the handles.
mxText.prototype.verticalTextRotation
Rotation for vertical text.
mxCellState.prototype.view
Reference to the enclosing mxGraphView.
mxGraph.prototype.view
Holds the mxGraphView that caches the mxCellStates for the cells.
mxTemporaryCellStates.prototype.view
Holds the width of the rectangle.
mxEdgeHandler.prototype.virtualBendsEnabled
Specifies if virtual bends should be added in the center of each segments.
mxCell.prototype.visible
Specifies whether the cell is visible.
mxShape.prototype.visible
Specifies if the shape is visible.
mxWindow.prototype.visible
Boolean flag that represents the visible state of the window.
mxCellState.prototype.visibleSourceState
Caches the visible source terminal state.
mxGraphModel.prototype.visibleStateForCellChanged = function(cell,
visible)
Inner callback to update the visible state of the given mxCell using mxCell.setCollapsed and return the previous visible state.
mxCellState.prototype.visibleTargetState
Caches the visible target terminal state.
mxDictionary.prototype.visit = function(visitor)
Visits all entries in the dictionary using the given function with the following signature: function(key, value) where key is a string and value is an object.
mxGraphHierarchyModel.prototype.visit = function(visitor,
dfsRoots,
trackAncestors,
seenNodes)
A depth first search through the internal heirarchy model.
mxSwimlaneModel.prototype.visit = function(visitor,
dfsRoots,
trackAncestors,
seenNodes)
A depth first search through the internal heirarchy model.
mxCompactTreeLayout.prototype.visited
Specifies if the tree should be moved to the top, left corner if it is inside a top-level layer.
WeightedCellSorter.prototype.visited
Whether or not this cell has been visited in the current assignment.
Prefix for VML namespace in node names.
mxDoubleEllipse.prototype.vmlScale
Scale for improving the precision of VML rendering.
mxShape.prototype.vmlScale
Scale for improving the precision of VML rendering.
mxVmlCanvas2D.prototype.vmlScale
Specifies the scale used to draw VML shapes.
+
Defines the color to be used for the coloring valid connection previews.
mxGraphView.prototype.validate = function(cell)
Calls validateCell and validateCellState and updates the graphBounds using getBoundingBox.
mxGraphView.prototype.validateBackground = function()
Calls validateBackgroundImage and validateBackgroundPage.
mxGraphView.prototype.validateBackgroundImage = function()
Validates the background image.
mxGraphView.prototype.validateBackgroundPage = function()
Validates the background page.
mxGraph.prototype.validateCell = function(cell,
context)
Hook method for subclassers to return an error message for the given cell and validation context.
mxGraphView.prototype.validateCell = function(cell,
visible)
Recursively creates the cell state for the given cell if visible is true and the given cell is visible.
mxGraphView.prototype.validateCellState = function(cell,
recurse)
Validates and repaints the mxCellState for the given mxCell.
mxConnectionHandler.prototype.validateConnection = function(source,
target)
Returns the error message or an empty string if the connection for the given source target pair is not valid.
mxEdgeHandler.prototype.validateConnection = function(source,
target)
Returns the error message or an empty string if the connection for the given source, target pair is not valid.
mxGraph.prototype.validateEdge = function(edge,
source,
target)
Hook method for subclassers to return an error message for the given edge and terminals.
mxGraph.prototype.validateGraph = function(cell,
context)
Validates the graph by validating each descendant of the given cell or the root of the model.
mxEditor.prototype.validating
Specifies if mxGraph.validateGraph should automatically be invoked after each change.
mxGraph.prototype.validationAlert = function(message)
Displays the given validation error in a dialog.
mxCellMarker.prototype.validColor
Holds the valid marker color.
mxMultiplicity.prototype.validNeighbors
Holds an array of strings that specify the type of neighbor for which this rule applies.
mxMultiplicity.prototype.validNeighborsAllowed
Boolean indicating if the list of validNeighbors are those that are allowed for this rule or those that are not allowed for this rule.
mxCellMarker.prototype.validState
Holds the marked mxCellState if it is valid.
mxCell.prototype.value
Holds the user object.
mxMultiplicity.prototype.value
Optional string that specifies the value of the attribute to be passed to mxUtils.isNode to check if the rule applies to a cell.
mxCell.prototype.valueChanged = function(newValue)
Changes the user object after an in-place edit and returns the previous value.
mxGraphModel.prototype.valueForCellChanged = function(cell,
value)
Inner callback to update the user object of the given mxCell using mxCell.valueChanged and return the previous value, that is, the return value of mxCell.valueChanged.
Maps from strings to objects.
Contains the current version of the mxGraph library.
mxCell.prototype.vertex
Specifies whether the cell is a vertex.
Defines the color to be used for the selection border of vertices.
Defines the strokewidth to be used for vertex selections.
mxFastOrganicLayout.prototype.vertexArray
An array of all vertices to be laid out.
mxGraph.prototype.vertexLabelsMovable
Specifies the return value for vertices in isLabelMovable.
mxGraphHierarchyModel.prototype.vertexMapper
Map from graph vertices to internal model nodes.
mxSwimlaneModel.prototype.vertexMapper
Map from graph vertices to internal model nodes.
mxGuide.prototype.vertical
Specifies if vertical guides are enabled.
mxCellOverlay.prototype.verticalAlign
Holds the vertical alignment for the overlay.
mxCompactTreeLayout.prototype.verticalLayout = function(node,
parent,
x0,
y0,
bounds)
mxVertexHandler.prototype.verticalOffset
The horizontal offset for the handles.
mxText.prototype.verticalTextRotation
Rotation for vertical text.
mxCellState.prototype.view
Reference to the enclosing mxGraphView.
mxGraph.prototype.view
Holds the mxGraphView that caches the mxCellStates for the cells.
mxTemporaryCellStates.prototype.view
Holds the width of the rectangle.
mxEdgeHandler.prototype.virtualBendsEnabled
Specifies if virtual bends should be added in the center of each segments.
mxCell.prototype.visible
Specifies whether the cell is visible.
mxShape.prototype.visible
Specifies if the shape is visible.
mxWindow.prototype.visible
Boolean flag that represents the visible state of the window.
mxCellState.prototype.visibleSourceState
Caches the visible source terminal state.
mxGraphModel.prototype.visibleStateForCellChanged = function(cell,
visible)
Inner callback to update the visible state of the given mxCell using mxCell.setCollapsed and return the previous visible state.
mxCellState.prototype.visibleTargetState
Caches the visible target terminal state.
mxDictionary.prototype.visit = function(visitor)
Visits all entries in the dictionary using the given function with the following signature: function(key, value) where key is a string and value is an object.
mxGraphHierarchyModel.prototype.visit = function(visitor,
dfsRoots,
trackAncestors,
seenNodes)
A depth first search through the internal heirarchy model.
mxSwimlaneModel.prototype.visit = function(visitor,
dfsRoots,
trackAncestors,
seenNodes)
A depth first search through the internal heirarchy model.
mxCompactTreeLayout.prototype.visited
Specifies if the tree should be moved to the top, left corner if it is inside a top-level layer.
WeightedCellSorter.prototype.visited
Whether or not this cell has been visited in the current assignment.
Prefix for VML namespace in node names.
mxDoubleEllipse.prototype.vmlScale
Scale for improving the precision of VML rendering.
mxShape.prototype.vmlScale
Scale for improving the precision of VML rendering.
mxVmlCanvas2D.prototype.vmlScale
Specifies the scale used to draw VML shapes.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General2.html b/docs/js-api/index/General2.html index 8c6cf4136..61a9b00f4 100644 --- a/docs/js-api/index/General2.html +++ b/docs/js-api/index/General2.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General20.html b/docs/js-api/index/General20.html index 42a95700b..1209d603c 100644 --- a/docs/js-api/index/General20.html +++ b/docs/js-api/index/General20.html @@ -11,21 +11,21 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
W
 w0, mxStencil
 warn, mxLog
 WARN, mxLog
 warningImage, mxGraph
 waypointsEnabled, mxConnectionHandler
 WeightedCellSorter
 weightedMedian, mxMedianHybridCrossingReduction
 weightedValue, WeightedCellSorter
 widestRank, mxCoordinateAssignment
 widestRankValue, mxCoordinateAssignment
 width
 Windows, mxEditor
 withCredentials, mxXmlRequest
 wnd, mxPrintPreview
 wrap, mxStackLayout
 write
 writeAttribute, mxObjectCodec
 writeComplexAttribute, mxObjectCodec
 writeDefaults, mxXmlCanvas2D
 writeGraphModel, mxEditor
 writeHead, mxPrintPreview
 writeln
 writePrimitiveAttribute, mxObjectCodec
X
 x
 x0
Y
 y
 y0
Z
 zIndex
 zoom, mxGraph
 zoomActual, mxGraph
 zoomFactor, mxGraph
 zoomIn, mxGraph
 zoomOut, mxGraph
 zoomTo, mxGraph
 zoomToRect, mxGraph
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
W
 w0, mxStencil
 warn, mxLog
 WARN, mxLog
 warningImage, mxGraph
 waypointsEnabled, mxConnectionHandler
 WeightedCellSorter
 weightedMedian, mxMedianHybridCrossingReduction
 weightedValue, WeightedCellSorter
 widestRank, mxCoordinateAssignment
 widestRankValue, mxCoordinateAssignment
 width
 Windows, mxEditor
 withCredentials, mxXmlRequest
 wnd, mxPrintPreview
 wrap, mxStackLayout
 write
 writeAttribute, mxObjectCodec
 writeComplexAttribute, mxObjectCodec
 writeDefaults, mxXmlCanvas2D
 writeGraphModel, mxEditor
 writeHead, mxPrintPreview
 writeln
 writePrimitiveAttribute, mxObjectCodec
X
 x
 x0
Y
 y
 y0
Z
 zIndex
 zoom, mxGraph
 zoomActual, mxGraph
 zoomFactor, mxGraph
 zoomIn, mxGraph
 zoomOut, mxGraph
 zoomTo, mxGraph
 zoomToRect, mxGraph
-
mxStencil.prototype.w0
Holds the width of the shape.
warn: function()
Adds all arguments to the console if WARN is enabled.
Specifies if the output for warn should be visible in the console.
mxGraph.prototype.warningImage
Specifies the mxImage for the image to be used to display a warning overlay.
mxConnectionHandler.prototype.waypointsEnabled
Specifies if single clicks should add waypoints on the new edge.
A utility class used to track cells whilst sorting occurs on the weighted sum of their connected edges.
function WeightedCellSorter(cell,
weightedValue)
Constructs a new weighted cell sorted for the given cell and weight.
mxMedianHybridCrossingReduction.prototype.weightedMedian = function(iteration,
model)
Sweeps up or down the layout attempting to minimise the median placement of connected cells on adjacent ranks
WeightedCellSorter.prototype.weightedValue
The weighted value of the cell stored.
mxCoordinateAssignment.prototype.widestRank
The rank that has the widest x position
mxCoordinateAssignment.prototype.widestRankValue
The X-coordinate of the edge of the widest rank
mxGraphAbstractHierarchyCell.prototype.width
The width of this cell
mxImage.prototype.width
Integer that specifies the width of the image.
mxRectangle.prototype.width
Holds the width of the rectangle.
mxXmlRequest.prototype.withCredentials
Specifies if withCredentials should be used in HTML5-compliant browsers.
mxPrintPreview.prototype.wnd
Reference to the preview window.
mxStackLayout.prototype.wrap
Value at which a new column or row should be created.
write: function()
Adds the specified strings to the console.
write: function(parent,
text)
Creates a text node for the given string and appends it to the given parent.
mxObjectCodec.prototype.writeAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value into node using writePrimitiveAttribute or writeComplexAttribute depending on the type of the value.
mxObjectCodec.prototype.writeComplexAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value as a child node of the given node.
mxXmlCanvas2D.prototype.writeDefaults = function()
mxEditor.prototype.writeGraphModel = function (linefeed)
Hook to create the string representation of the diagram.
mxPrintPreview.prototype.writeHead = function(doc,
css)
Writes the HEAD section into the given document, without the opening and closing HEAD tags.
writeln: function()
Adds the specified strings to the console, appending a linefeed at the end of each string.
writeln: function(parent,
text)
Creates a text node for the given string and appends it to the given parent with an additional linefeed.
mxObjectCodec.prototype.writePrimitiveAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value as an attribute of the given node.
+
mxStencil.prototype.w0
Holds the width of the shape.
warn: function()
Adds all arguments to the console if WARN is enabled.
Specifies if the output for warn should be visible in the console.
mxGraph.prototype.warningImage
Specifies the mxImage for the image to be used to display a warning overlay.
mxConnectionHandler.prototype.waypointsEnabled
Specifies if single clicks should add waypoints on the new edge.
A utility class used to track cells whilst sorting occurs on the weighted sum of their connected edges.
function WeightedCellSorter(cell,
weightedValue)
Constructs a new weighted cell sorted for the given cell and weight.
mxMedianHybridCrossingReduction.prototype.weightedMedian = function(iteration,
model)
Sweeps up or down the layout attempting to minimise the median placement of connected cells on adjacent ranks
WeightedCellSorter.prototype.weightedValue
The weighted value of the cell stored.
mxCoordinateAssignment.prototype.widestRank
The rank that has the widest x position
mxCoordinateAssignment.prototype.widestRankValue
The X-coordinate of the edge of the widest rank
mxGraphAbstractHierarchyCell.prototype.width
The width of this cell
mxImage.prototype.width
Integer that specifies the width of the image.
mxRectangle.prototype.width
Holds the width of the rectangle.
mxXmlRequest.prototype.withCredentials
Specifies if withCredentials should be used in HTML5-compliant browsers.
mxPrintPreview.prototype.wnd
Reference to the preview window.
mxStackLayout.prototype.wrap
Value at which a new column or row should be created.
write: function()
Adds the specified strings to the console.
write: function(parent,
text)
Creates a text node for the given string and appends it to the given parent.
mxObjectCodec.prototype.writeAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value into node using writePrimitiveAttribute or writeComplexAttribute depending on the type of the value.
mxObjectCodec.prototype.writeComplexAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value as a child node of the given node.
mxXmlCanvas2D.prototype.writeDefaults = function()
mxEditor.prototype.writeGraphModel = function (linefeed)
Hook to create the string representation of the diagram.
mxPrintPreview.prototype.writeHead = function(doc,
css)
Writes the HEAD section into the given document, without the opening and closing HEAD tags.
writeln: function()
Adds the specified strings to the console, appending a linefeed at the end of each string.
writeln: function(parent,
text)
Creates a text node for the given string and appends it to the given parent with an additional linefeed.
mxObjectCodec.prototype.writePrimitiveAttribute = function(enc,
obj,
name,
value,
node)
Writes the given value as an attribute of the given node.
-
mxGraphAbstractHierarchyCell.prototype.x
The x position of this cell for each layer it occupies
mxPoint.prototype.x
Holds the x-coordinate of the point.
mxCircleLayout.prototype.x0
Integer specifying the left coordinate of the circle.
mxPrintPreview.prototype.x0
Holds the horizontal offset of the output.
mxStackLayout.prototype.x0
Specifies the horizontal origin of the layout.
+
mxGraphAbstractHierarchyCell.prototype.x
The x position of this cell for each layer it occupies
mxPoint.prototype.x
Holds the x-coordinate of the point.
mxCircleLayout.prototype.x0
Integer specifying the left coordinate of the circle.
mxPrintPreview.prototype.x0
Holds the horizontal offset of the output.
mxStackLayout.prototype.x0
Specifies the horizontal origin of the layout.
-
mxGraphAbstractHierarchyCell.prototype.y
The y position of this cell for each layer it occupies
mxPoint.prototype.y
Holds the y-coordinate of the point.
mxCircleLayout.prototype.y0
Integer specifying the top coordinate of the circle.
mxPrintPreview.prototype.y0
Holds the vertical offset of the output.
mxStackLayout.prototype.y0
Specifies the vertical origin of the layout.
+
mxGraphAbstractHierarchyCell.prototype.y
The y position of this cell for each layer it occupies
mxPoint.prototype.y
Holds the y-coordinate of the point.
mxCircleLayout.prototype.y0
Integer specifying the top coordinate of the circle.
mxPrintPreview.prototype.y0
Holds the vertical offset of the output.
mxStackLayout.prototype.y0
Specifies the vertical origin of the layout.
-
mxCellEditor.prototype.zIndex
Specifies the zIndex for the textarea.
mxPopupMenu.prototype.zIndex
Specifies the zIndex for the popupmenu and its shadow.
mxTooltipHandler.prototype.zIndex
Specifies the zIndex for the tooltip and its shadow.
mxGraph.prototype.zoom = function(factor,
center)
Zooms the graph using the given factor.
mxGraph.prototype.zoomActual = function()
Resets the zoom and panning in the view.
mxGraph.prototype.zoomFactor
Specifies the factor used for zoomIn and zoomOut.
mxGraph.prototype.zoomIn = function()
Zooms into the graph by zoomFactor.
mxGraph.prototype.zoomOut = function()
Zooms out of the graph by zoomFactor.
mxGraph.prototype.zoomTo = function(scale,
center)
Zooms the graph to the given scale with an optional boolean center argument, which is passd to zoom.
mxGraph.prototype.zoomToRect = function(rect)
Zooms the graph to the specified rectangle.
+
mxCellEditor.prototype.zIndex
Specifies the zIndex for the textarea.
mxPopupMenu.prototype.zIndex
Specifies the zIndex for the popupmenu and its shadow.
mxTooltipHandler.prototype.zIndex
Specifies the zIndex for the tooltip and its shadow.
mxGraph.prototype.zoom = function(factor,
center)
Zooms the graph using the given factor.
mxGraph.prototype.zoomActual = function()
Resets the zoom and panning in the view.
mxGraph.prototype.zoomFactor
Specifies the factor used for zoomIn and zoomOut.
mxGraph.prototype.zoomIn = function()
Zooms into the graph by zoomFactor.
mxGraph.prototype.zoomOut = function()
Zooms out of the graph by zoomFactor.
mxGraph.prototype.zoomTo = function(scale,
center)
Zooms the graph to the given scale with an optional boolean center argument, which is passd to zoom.
mxGraph.prototype.zoomToRect = function(rect)
Zooms the graph to the specified rectangle.
@@ -33,7 +33,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General3.html b/docs/js-api/index/General3.html index 1677a53de..ac4959f26 100644 --- a/docs/js-api/index/General3.html +++ b/docs/js-api/index/General3.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
C
 calcAttraction, mxFastOrganicLayout
 calcPositions, mxFastOrganicLayout
 calcRepulsion, mxFastOrganicLayout
 calcRowDims, mxRadialTreeLayout
 calculateCrossings, mxMedianHybridCrossingReduction
 calculatedWeightedValue, mxCoordinateAssignment
 calculateRankCrossing, mxMedianHybridCrossingReduction
 calculateWidestRank, mxCoordinateAssignment
 canExportCell, mxGraph
 canImportCell, mxGraph
 canRedo, mxUndoManager
 canUndo, mxUndoManager
 captureDocumentGesture, mxGraphView
 cascadeOpacity
 cell
 Cell alignment and orientation, mxGraph
 Cell cloning,insertion and removal, mxGraph
 Cell connecting and connection constraints, mxGraph
 Cell moving, mxGraph
 Cell retrieval, mxGraph
 Cell sizing, mxGraph
 Cell styles, mxGraph
 Cell visibility, mxGraph
 CELL_CONNECTED
 cellAdded
 cellCloned, mxGraphModel
 cellConnected, mxGraph
 cellEditor, mxGraph
 cellLabelChanged, mxGraph
 cellLocation, mxFastOrganicLayout
 cellRemoved
 cellRenderer, mxGraph
 cellResized
 cells
 CELLS_ADDED
 CELLS_FOLDED
 CELLS_MOVED
 CELLS_ORDERED
 CELLS_REMOVED
 CELLS_RESIZED
 CELLS_TOGGLED, mxEvent
 cellsAdded
 cellsBendable, mxGraph
 cellsCloneable, mxGraph
 cellsDeletable, mxGraph
 cellsDisconnectable, mxGraph
 cellsEditable, mxGraph
 cellsFolded, mxGraph
 cellSizeUpdated, mxGraph
 cellsLocked, mxGraph
 cellsMovable, mxGraph
 cellsMoved
 cellsOrdered, mxGraph
 cellsRemoved, mxGraph
 cellsResizable, mxGraph
 cellsResized
 cellsSelectable, mxGraph
 cellsToggled, mxGraph
 center, mxGraph
 centerZoom, mxGraph
 CHANGE
 changeHandler
 changePoints, mxEdgeHandler
 changes, mxUndoableEdit
 changeSelection, mxGraphSelectionModel
 changeTerminalPoint, mxEdgeHandler
 channelBuffer
 check, mxMultiplicity
 checkBounds
 checkLabelHandle, mxEdgeHandler
 checkNeighbors, mxMultiplicity
 checkTerminal, mxMultiplicity
 checkTolerance, mxVertexHandler
 checkType, mxMultiplicity
 children, mxCell
 circle, mxCircleLayout
 clear
 CLEAR
 clearCellOverlays, mxGraph
 clearSelection
 clearSelectionOnBackground, mxPopupMenuHandler
 click, mxGraph
 CLICK
 clone
 cloneCell, mxGraphModel
 cloneCellImpl, mxGraphModel
 cloneCells
 cloneEnabled
 cloneInvalidEdges, mxGraph
 clonePreviewState, mxEdgeHandler
 cloneTemplate, mxObjectCodec
 cloneValue, mxCell
 close
 CLOSE
 closeImage, mxWindow
 closeOp
 closeResource, mxUtils
 codecs, mxCodecRegistry
 collapsed, mxCell
 collapsedImage, mxGraph
 collapsedStateForCellChanged, mxGraphModel
 collapseExpandResource, mxGraph
 collapseToPreferredSize, mxGraph
 compare
 compressed, mxXmlCanvas2D
 computeAspect, mxStencil
 config, mxDefaultPopupMenu
 configure, mxEditor
 configureCanvas
 configureShape, mxCellRenderer
 confirm, mxUtils
 connect
 CONNECT
 CONNECT_CELL
 CONNECT_HANDLE_FILLCOLOR, mxConstants
 connectable, mxCell
 connectableEdges, mxGraph
 connectCell, mxGraph
 connectIconOffset, mxConnectionHandler
 connectImage, mxConnectionHandler
 connectOnDrop
 connectsAsSource, mxGraphHierarchyNode
 connectsAsTarget, mxGraphHierarchyNode
 consoleName, mxLog
 constrainChild, mxGraph
 constrainChildCells, mxGraph
 constrainChildren, mxGraph
 constrainChildrenOnResize, mxGraph
 constrainGroupByChildren, mxVertexHandler
 constraintHandler
 constraints, mxStencil
 consume
 consumeCycleAttribute, mxEditor
 consumed
 consumeMouseEvent, mxGraph
 consumePanningTrigger, mxPanningHandler
 container, mxToolbar
 contains
 containsValidationErrorsResource, mxGraph
 content, mxWindow
 contentHeightCorrection, mxWindow
 controlKeys, mxKeyHandler
 Controls and Handlers, mxEditor
 controlShiftKeys, mxKeyHandler
 convert, mxUrlConverter
 convertAttributeFromXml, mxObjectCodec
 convertAttributeToXml, mxObjectCodec
 converter, mxAbstractCanvas2D
 convertPoint
 convertValueToString, mxGraph
 convertWaypoint, mxConnectionHandler
 copy, mxClipboard
 copyStyle, mxVertexHandler
 count, mxCellStatePreview
 counter, mxObjectIdentity
 countError, mxMultiplicity
 create
 createBackgroundPageShape, mxGraphView
 createBends
 createBoundingBox, mxShape
 createBounds, mxVertexHandler
 createCanvas, mxShape
 createCellEditor, mxGraph
 createCellOverlays, mxCellRenderer
 createCellRenderer, mxGraph
 createClip, mxSvgCanvas2D
 createConditions, mxDefaultPopupMenu
 createConnectionHandler, mxGraph
 createControl, mxCellRenderer
 createCustomHandles, mxVertexHandler
 createDashPattern, mxSvgCanvas2D
 createDefaultEdgeStyle, mxStylesheet
 createDefaultVertexStyle, mxStylesheet
 createDiagramLayout, mxEditor
 createDiv, mxSvgCanvas2D
 createDragElement, mxDragSource
 createEdge
 createEdgeHandler, mxGraph
 createEdgeSegmentHandler, mxGraph
 createEdgeState, mxConnectionHandler
 createElbowEdgeHandler, mxGraph
 createElement
 createFill, mxVmlCanvas2D
 createGradientId, mxSvgCanvas2D
 createGraph
 createGraphHandler, mxGraph
 createGraphView, mxGraph
 createGroup, mxEditor
 createGroupCell, mxGraph
 createGuideShape, mxGuide
 createHandler, mxGraph
 createHandlers, mxGraph
 createHandleShape, mxEdgeHandler
 createHtml
 createHtmlPane, mxGraphView
 createIcons, mxConnectionHandler
 createId, mxGraphModel
 createIds, mxGraphModel
 createImage, mxUtils
 createIndicatorShape, mxCellRenderer
 createInternalCells
 createLabel, mxCellRenderer
 createLabelHandleShape, mxEdgeHandler
 createLayoutManager, mxEditor
 createLine, mxCompactTreeLayout
 createMarker
 createMenu, mxDefaultPopupMenu
 createNode, mxCompactTreeLayout
 createPageSelector, mxPrintPreview
 createPanningHandler, mxGraph
 createPanningManager, mxGraph
 createParentHighlightShape, mxVertexHandler
 createPopupMenu, mxEditor
 createPopupMenuHandler, mxGraph
 createPreviewElement, mxDragSource
 createPreviewShape, mxGraphHandler
 createProperties, mxEditor
 createRect, mxVmlCanvas2D
 createRoot, mxGraphModel
 createSelectionCellsHandler, mxGraph
 createSelectionModel, mxGraph
 createSelectionShape
 createShadow
 createShadowFill, mxVmlCanvas2D
 createShadowStroke, mxVmlCanvas2D
 createShape
 createSizer
 createSizerShape, mxVertexHandler
 createState
 createStroke, mxVmlCanvas2D
 createStyle, mxSvgCanvas2D
 createStylesheet, mxGraph
 createSubmenu, mxPopupMenu
 createSvg, mxShape
 createSvgCanvas, mxShape
 createSvgGradient, mxSvgCanvas2D
 createSwimlaneLayout, mxEditor
 createSwimlaneManager, mxEditor
 createTarget, mxConnectionHandler
 createTargetVertex, mxConnectionHandler
 createTasks, mxEditor
 createText, mxVmlCanvas2D
 createTextDiv, mxCellEditor
 createTolerance, mxSvgCanvas2D
 createToolbar, mxEditor
 createTooltipHandler, mxGraph
 createTransparentFill, mxVmlCanvas2D
 createTransparentSvgRectangle, mxShape
 createUndoableEdit, mxGraphModel
 createUrlConverter, mxAbstractCanvas2D
 createVertex, mxGraph
 createVertexHandler, mxGraph
 createVirtualBend, mxElbowEdgeHandler
 createVirtualBends, mxEdgeHandler
 createVml, mxShape
 createVmlCanvas, mxShape
 createVmlElement, mxVmlCanvas2D
 createVmlGroup, mxShape
 createVmlPane, mxGraphView
 createXmlDocument, mxUtils
 crossingStage
 currentBestCrossings, mxMedianHybridCrossingReduction
 currentColor, mxCellMarker
 currentDropTarget, mxDragSource
 currentDx, mxGraphHandler
 currentDy, mxGraphHandler
 currentEdit, mxGraphModel
 currentFileResource, mxEditor
 currentGraph, mxDragSource
 currentGuide, mxDragSource
 currentPoint, mxDragSource
 currentRoot, mxGraphView
 currentX, mxRubberband
 currentXDelta, mxCoordinateAssignment
 currentY, mxRubberband
 cursor
 CURSOR_BEND_HANDLE, mxConstants
 CURSOR_CONNECT, mxConstants
 CURSOR_LABEL_HANDLE, mxConstants
 CURSOR_MOVABLE_EDGE, mxConstants
 CURSOR_MOVABLE_VERTEX, mxConstants
 CURSOR_TERMINAL_HANDLE, mxConstants
 CURSOR_VIRTUAL_BEND_HANDLE, mxConstants
 curveOp
 curveTo
 CUSTOM_HANDLE, mxEvent
 cut, mxClipboard
 cycleAttribute, mxEditor
 cycleAttributeIndex, mxEditor
 cycleAttributeName, mxEditor
 cycleAttributeValues, mxEditor
 cycleStage
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
C
 calcAttraction, mxFastOrganicLayout
 calcPositions, mxFastOrganicLayout
 calcRepulsion, mxFastOrganicLayout
 calcRowDims, mxRadialTreeLayout
 calculateCrossings, mxMedianHybridCrossingReduction
 calculatedWeightedValue, mxCoordinateAssignment
 calculateRankCrossing, mxMedianHybridCrossingReduction
 calculateWidestRank, mxCoordinateAssignment
 canExportCell, mxGraph
 canImportCell, mxGraph
 canRedo, mxUndoManager
 canUndo, mxUndoManager
 captureDocumentGesture, mxGraphView
 cascadeOpacity
 cell
 Cell alignment and orientation, mxGraph
 Cell cloning,insertion and removal, mxGraph
 Cell connecting and connection constraints, mxGraph
 Cell moving, mxGraph
 Cell retrieval, mxGraph
 Cell sizing, mxGraph
 Cell styles, mxGraph
 Cell visibility, mxGraph
 CELL_CONNECTED
 cellAdded
 cellCloned, mxGraphModel
 cellConnected, mxGraph
 cellEditor, mxGraph
 cellLabelChanged, mxGraph
 cellLocation, mxFastOrganicLayout
 cellRemoved
 cellRenderer, mxGraph
 cellResized
 cells
 CELLS_ADDED
 CELLS_FOLDED
 CELLS_MOVED
 CELLS_ORDERED
 CELLS_REMOVED
 CELLS_RESIZED
 CELLS_TOGGLED, mxEvent
 cellsAdded
 cellsBendable, mxGraph
 cellsCloneable, mxGraph
 cellsDeletable, mxGraph
 cellsDisconnectable, mxGraph
 cellsEditable, mxGraph
 cellsFolded, mxGraph
 cellSizeUpdated, mxGraph
 cellsLocked, mxGraph
 cellsMovable, mxGraph
 cellsMoved
 cellsOrdered, mxGraph
 cellsRemoved, mxGraph
 cellsResizable, mxGraph
 cellsResized
 cellsSelectable, mxGraph
 cellsToggled, mxGraph
 center, mxGraph
 centerZoom, mxGraph
 CHANGE
 changeHandler
 changePoints, mxEdgeHandler
 changes, mxUndoableEdit
 changeSelection, mxGraphSelectionModel
 changeTerminalPoint, mxEdgeHandler
 channelBuffer
 check, mxMultiplicity
 checkBounds
 checkLabelHandle, mxEdgeHandler
 checkNeighbors, mxMultiplicity
 checkTerminal, mxMultiplicity
 checkTolerance, mxVertexHandler
 checkType, mxMultiplicity
 children, mxCell
 circle, mxCircleLayout
 clear
 CLEAR
 clearCellOverlays, mxGraph
 clearSelection
 clearSelectionOnBackground, mxPopupMenuHandler
 click, mxGraph
 CLICK
 clone
 cloneCell, mxGraphModel
 cloneCellImpl, mxGraphModel
 cloneCells
 cloneEnabled
 cloneInvalidEdges, mxGraph
 clonePreviewState, mxEdgeHandler
 cloneTemplate, mxObjectCodec
 cloneValue, mxCell
 close
 CLOSE
 closeImage, mxWindow
 closeOp
 closeResource, mxUtils
 codecs, mxCodecRegistry
 collapsed, mxCell
 collapsedImage, mxGraph
 collapsedStateForCellChanged, mxGraphModel
 collapseExpandResource, mxGraph
 collapseToPreferredSize, mxGraph
 compare
 compressed, mxXmlCanvas2D
 computeAspect, mxStencil
 config, mxDefaultPopupMenu
 configure, mxEditor
 configureCanvas
 configureShape, mxCellRenderer
 confirm, mxUtils
 connect
 CONNECT
 CONNECT_CELL
 CONNECT_HANDLE_FILLCOLOR, mxConstants
 connectable, mxCell
 connectableEdges, mxGraph
 connectCell, mxGraph
 connectIconOffset, mxConnectionHandler
 connectImage, mxConnectionHandler
 connectOnDrop
 connectsAsSource, mxGraphHierarchyNode
 connectsAsTarget, mxGraphHierarchyNode
 consoleName, mxLog
 constrainChild, mxGraph
 constrainChildCells, mxGraph
 constrainChildren, mxGraph
 constrainChildrenOnResize, mxGraph
 constrainGroupByChildren, mxVertexHandler
 constraintHandler
 constraints, mxStencil
 consume
 consumeCycleAttribute, mxEditor
 consumed
 consumeMouseEvent, mxGraph
 consumePanningTrigger, mxPanningHandler
 container, mxToolbar
 contains
 containsValidationErrorsResource, mxGraph
 content, mxWindow
 contentHeightCorrection, mxWindow
 controlKeys, mxKeyHandler
 Controls and Handlers, mxEditor
 controlShiftKeys, mxKeyHandler
 convert, mxUrlConverter
 convertAttributeFromXml, mxObjectCodec
 convertAttributeToXml, mxObjectCodec
 converter, mxAbstractCanvas2D
 convertHtml, mxSvgCanvas2D
 convertPoint
 convertValueToString, mxGraph
 convertWaypoint, mxConnectionHandler
 copy, mxClipboard
 copyStyle, mxVertexHandler
 count, mxCellStatePreview
 counter, mxObjectIdentity
 countError, mxMultiplicity
 create
 createBackgroundPageShape, mxGraphView
 createBends
 createBoundingBox, mxShape
 createBounds, mxVertexHandler
 createCanvas, mxShape
 createCellEditor, mxGraph
 createCellOverlays, mxCellRenderer
 createCellRenderer, mxGraph
 createClip, mxSvgCanvas2D
 createConditions, mxDefaultPopupMenu
 createConnectionHandler, mxGraph
 createControl, mxCellRenderer
 createCustomHandles, mxVertexHandler
 createDashPattern, mxSvgCanvas2D
 createDefaultEdgeStyle, mxStylesheet
 createDefaultVertexStyle, mxStylesheet
 createDiagramLayout, mxEditor
 createDiv, mxSvgCanvas2D
 createDragElement, mxDragSource
 createEdge
 createEdgeHandler, mxGraph
 createEdgeSegmentHandler, mxGraph
 createEdgeState, mxConnectionHandler
 createElbowEdgeHandler, mxGraph
 createElement
 createFill, mxVmlCanvas2D
 createGradientId, mxSvgCanvas2D
 createGraph
 createGraphHandler, mxGraph
 createGraphView, mxGraph
 createGroup, mxEditor
 createGroupCell, mxGraph
 createGuideShape, mxGuide
 createHandler, mxGraph
 createHandlers, mxGraph
 createHandleShape, mxEdgeHandler
 createHtml
 createHtmlPane, mxGraphView
 createIcons, mxConnectionHandler
 createId, mxGraphModel
 createIds, mxGraphModel
 createImage, mxUtils
 createIndicatorShape, mxCellRenderer
 createInternalCells
 createLabel, mxCellRenderer
 createLabelHandleShape, mxEdgeHandler
 createLayoutManager, mxEditor
 createLine, mxCompactTreeLayout
 createMarker
 createMenu, mxDefaultPopupMenu
 createNode, mxCompactTreeLayout
 createPageSelector, mxPrintPreview
 createPanningHandler, mxGraph
 createPanningManager, mxGraph
 createParentHighlightShape, mxVertexHandler
 createPopupMenu, mxEditor
 createPopupMenuHandler, mxGraph
 createPreviewElement, mxDragSource
 createPreviewShape, mxGraphHandler
 createProperties, mxEditor
 createRect, mxVmlCanvas2D
 createRoot, mxGraphModel
 createSelectionCellsHandler, mxGraph
 createSelectionModel, mxGraph
 createSelectionShape
 createShadow
 createShadowFill, mxVmlCanvas2D
 createShadowStroke, mxVmlCanvas2D
 createShape
 createSizer
 createSizerShape, mxVertexHandler
 createState
 createStroke, mxVmlCanvas2D
 createStyle, mxSvgCanvas2D
 createStylesheet, mxGraph
 createSubmenu, mxPopupMenu
 createSvg, mxShape
 createSvgCanvas, mxShape
 createSvgGradient, mxSvgCanvas2D
 createSwimlaneLayout, mxEditor
 createSwimlaneManager, mxEditor
 createTarget, mxConnectionHandler
 createTargetVertex, mxConnectionHandler
 createTasks, mxEditor
 createText, mxVmlCanvas2D
 createTextDiv, mxCellEditor
 createTolerance, mxSvgCanvas2D
 createToolbar, mxEditor
 createTooltipHandler, mxGraph
 createTransparentFill, mxVmlCanvas2D
 createTransparentSvgRectangle, mxShape
 createUndoableEdit, mxGraphModel
 createUrlConverter, mxAbstractCanvas2D
 createVertex, mxGraph
 createVertexHandler, mxGraph
 createVirtualBend, mxElbowEdgeHandler
 createVirtualBends, mxEdgeHandler
 createVml, mxShape
 createVmlCanvas, mxShape
 createVmlElement, mxVmlCanvas2D
 createVmlGroup, mxShape
 createVmlPane, mxGraphView
 createXmlDocument, mxUtils
 crossingStage
 currentBestCrossings, mxMedianHybridCrossingReduction
 currentColor, mxCellMarker
 currentDropTarget, mxDragSource
 currentDx, mxGraphHandler
 currentDy, mxGraphHandler
 currentEdit, mxGraphModel
 currentFileResource, mxEditor
 currentGraph, mxDragSource
 currentGuide, mxDragSource
 currentPoint, mxDragSource
 currentRoot, mxGraphView
 currentX, mxRubberband
 currentXDelta, mxCoordinateAssignment
 currentY, mxRubberband
 cursor
 CURSOR_BEND_HANDLE, mxConstants
 CURSOR_CONNECT, mxConstants
 CURSOR_LABEL_HANDLE, mxConstants
 CURSOR_MOVABLE_EDGE, mxConstants
 CURSOR_MOVABLE_VERTEX, mxConstants
 CURSOR_TERMINAL_HANDLE, mxConstants
 CURSOR_VIRTUAL_BEND_HANDLE, mxConstants
 curveOp
 curveTo
 CUSTOM_HANDLE, mxEvent
 cut, mxClipboard
 cycleAttribute, mxEditor
 cycleAttributeIndex, mxEditor
 cycleAttributeName, mxEditor
 cycleAttributeValues, mxEditor
 cycleStage
-
mxFastOrganicLayout.prototype.calcAttraction = function()
Calculates the attractive forces between all laid out nodes linked by edges
mxFastOrganicLayout.prototype.calcPositions = function()
Takes the displacements calculated for each cell and applies them to the local cache of cell positions.
mxFastOrganicLayout.prototype.calcRepulsion = function()
Calculates the repulsive forces between all laid out nodes
mxRadialTreeLayout.prototype.calcRowDims = function(row,
rowNum)
Recursive function to calculate the dimensions of each row
mxMedianHybridCrossingReduction.prototype.calculateCrossings = function(model)
Calculates the total number of edge crossing in the current graph.
mxCoordinateAssignment.prototype.calculatedWeightedValue = function(
   currentCell,
   collection
)
Calculates the priority the specified cell has based on the type of its cell and the cells it is connected to on the next layer
mxMedianHybridCrossingReduction.prototype.calculateRankCrossing = function(
   i,
   model
)
Calculates the number of edges crossings between the specified rank and the rank below it.
mxCoordinateAssignment.prototype.calculateWidestRank = function(graph,
model)
Calculates the width rank in the hierarchy.
mxGraph.prototype.canExportCell = function(cell)
Returns true if the given cell may be exported to the clipboard.
mxGraph.prototype.canImportCell = function(cell)
Returns true if the given cell may be imported from the clipboard.
mxUndoManager.prototype.canRedo = function()
Returns true if a redo is possible.
mxUndoManager.prototype.canUndo = function()
Returns true if an undo is possible.
mxGraphView.prototype.captureDocumentGesture
Specifies if a gesture should be captured when it goes outside of the graph container.
cascadeOpacity: function(graph,
cell,
opacity)
Sets the opacity on the given cell and its descendants.
cascadeOpacity: function(graph,
cell,
opacity)
See mxEffects.cascadeOpacity.
MedianCellSorter.prototype.cell
The cell whose median value is being calculated
mxCellState.prototype.cell
Reference to the mxCell that is represented by this state.
mxGraphHierarchyNode.prototype.cell
The graph cell this object represents.
WeightedCellSorter.prototype.cell
The cell whose median value is being calculated.
Specifies the event name for cellConnected.
Fires between begin- and endUpdate in cellConnected.
mxGraphModel.prototype.cellAdded = function(cell)
Inner callback to update cells when a cell has been added.
mxGraphSelectionModel.prototype.cellAdded = function(cell)
Inner callback to add the specified mxCell to the selection.
mxGraphModel.prototype.cellCloned = function(cell)
Hook for cloning the cell.
mxGraph.prototype.cellConnected = function(edge,
terminal,
source,
constraint)
Sets the new terminal for the given edge and resets the edge points if resetEdgesOnConnect is true.
mxGraph.prototype.cellEditor
Holds the mxCellEditor that is used as the in-place editing.
mxGraph.prototype.cellLabelChanged = function(cell,
value,
autoSize)
Sets the new label for a cell.
mxFastOrganicLayout.prototype.cellLocation
An array of locally stored co-ordinate positions for the vertices.
mxGraphModel.prototype.cellRemoved = function(cell)
Inner callback to update cells when a cell has been removed.
mxGraphSelectionModel.prototype.cellRemoved = function(cell)
Inner callback to remove the specified mxCell from the selection.
mxGraph.prototype.cellRenderer
Holds the mxCellRenderer for rendering the cells in the graph.
mxGraph.prototype.cellResized = function(cell,
bounds,
ignoreRelative,
recurse)
Resizes the parents recursively so that they contain the complete area of the resized child cell.
mxSpaceManager.prototype.cellResized = function(cell)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
Holds the array of mxCells currently in the clipboard.
mxGraphModel.prototype.cells
Maps from Ids to cells.
mxMorphing.prototype.cells
Optional array of cells to be animated.
Specifies the event name for cellsAdded.
Fires between begin- and endUpdate in cellsAdded.
Specifies the event name for cellsFolded.
Fires between begin- and endUpdate in cellsFolded.
Specifies the event name for cellsMoved.
Fires between begin- and endUpdate in cellsMoved.
Specifies the event name for cellsOrdered.
Fires between begin- and endUpdate in cellsOrdered.
Specifies the event name for cellsRemoved.
Fires between begin- and endUpdate in cellsRemoved.
Specifies the event name for cellsResized.
Fires between begin- and endUpdate in cellsResized.
Specifies the event name for cellsToggled.
mxGraph.prototype.cellsAdded = function(cells,
parent,
index,
source,
target,
absolute,
constrain)
Adds the specified cells to the given parent.
mxSwimlaneManager.prototype.cellsAdded = function(cells)
Called if any cells have been added.
mxGraph.prototype.cellsBendable
Specifies the return value for isCellsBendable.
mxGraph.prototype.cellsCloneable
Specifies the return value for isCellCloneable.
mxGraph.prototype.cellsDeletable
Specifies the return value for isCellDeletable.
mxGraph.prototype.cellsDisconnectable
Specifies the return value for isCellDisconntable.
mxGraph.prototype.cellsEditable
Specifies the return value for isCellEditable.
mxGraph.prototype.cellsFolded = function(cells,
collapse,
recurse,
checkFoldable)
Sets the collapsed state of the specified cells.
mxGraph.prototype.cellSizeUpdated = function(cell,
ignoreChildren)
Updates the size of the given cell in the model using getPreferredSizeForCell to get the new size.
mxGraph.prototype.cellsLocked
Specifies the return value for isCellLocked.
mxGraph.prototype.cellsMovable
Specifies the return value for isCellMovable.
mxGraph.prototype.cellsMoved = function(cells,
dx,
dy,
disconnect,
constrain,
extend)
Moves the specified cells by the given vector, disconnecting the cells using disconnectGraph is disconnect is true.
mxLayoutManager.prototype.cellsMoved = function(cells,
evt)
Called from the moveHandler.
mxGraph.prototype.cellsOrdered = function(cells,
back)
Moves the given cells to the front or back.
mxGraph.prototype.cellsRemoved = function(cells)
Removes the given cells from the model.
mxGraph.prototype.cellsResizable
Specifies the return value for isCellResizable.
mxGraph.prototype.cellsResized = function(cells,
bounds,
recurse)
Sets the bounds of the given cells and fires a mxEvent.CELLS_RESIZED event.
mxSpaceManager.prototype.cellsResized = function(cells)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxSwimlaneManager.prototype.cellsResized = function(cells)
Called if any cells have been resizes.
mxGraph.prototype.cellsSelectable
Specifies the return value for isCellSelectable.
mxGraph.prototype.cellsToggled = function(cells,
show)
Sets the visible state of the specified cells.
mxGraph.prototype.center = function(horizontal,
vertical)
Centers the graph in the container.
mxGraph.prototype.centerZoom
Specifies if the zoom operations should go into the center of the actual diagram rather than going from top, left.
Specifies the event name for change.
Fires when an undoable edit is dispatched.
Fires after the selection changes by executing an mxSelectionChange.
mxAutoSaveManager.prototype.changeHandler
Holds the function that handles graph model changes.
mxConnectionHandler.prototype.changeHandler
Holds the change event listener for later removal.
mxEdgeHandler.prototype.changePoints = function(edge,
points,
clone)
Changes the control points of the given edge in the graph model.
mxUndoableEdit.prototype.changes
Array that contains the changes that make up this edit.
mxGraphSelectionModel.prototype.changeSelection = function(added,
removed)
Inner callback to add the specified mxCell to the selection.
mxEdgeHandler.prototype.changeTerminalPoint = function(edge,
point,
isSource,
clone)
Changes the terminal point of the given edge.
mxCompactTreeLayout.prototype.channelBuffer
The size of the vertical buffer in the center of inter-rank channels where edge control points should not be placed.
mxCoordinateAssignment.prototype.channelBuffer
The size of the vertical buffer in the center of inter-rank channels where edge control points should not be placed
mxMultiplicity.prototype.check = function(graph,
edge,
source,
target,
sourceOut,
targetIn)
Checks the multiplicity for the given arguments and returns the error for the given connection or null if the multiplicity does not apply.
mxShape.prototype.checkBounds = function()
Returns true if the bounds are not null and all of its variables are numeric.
mxText.prototype.checkBounds = function()
Returns true if the bounds are not null and all of its variables are numeric.
mxEdgeHandler.prototype.checkLabelHandle = function(b)
Checks if the label handle intersects the given bounds and moves it if it intersects.
mxMultiplicity.prototype.checkNeighbors = function(graph,
edge,
source,
target)
Checks if there are any valid neighbours in validNeighbors.
mxMultiplicity.prototype.checkTerminal = function(graph,
terminal,
edge)
Checks the given terminal cell and returns true if this rule applies.
mxVertexHandler.prototype.checkTolerance = function(me)
Checks if the coordinates for the given event are within the mxGraph.tolerance.
mxMultiplicity.prototype.checkType = function(graph,
value,
type,
attr,
attrValue)
Checks the type of the given value.
mxCell.prototype.children
Holds the child cells.
mxCircleLayout.prototype.circle = function(vertices,
r,
left,
top)
Executes the circular layout for the specified array of vertices and the given radius.
mxDictionary.prototype.clear = function()
Clears the dictionary.
mxGraphModel.prototype.clear = function()
Sets a new root using createRoot.
mxGraphSelectionModel.prototype.clear = function()
Clears the selection and fires a change event if the selection was not empty.
mxGraphView.prototype.clear = function(cell,
force,
recurse)
Removes the state of the given cell and all descendants if the given cell is not the current root.
clear: function(obj)
Removes the object id from the given object.
mxShape.prototype.clear = function()
Removes all child nodes and resets all CSS.
mxUndoManager.prototype.clear = function()
Clears the command history.
Specifies the event name for clear.
Fires after clear was invoked.
mxGraph.prototype.clearCellOverlays = function(cell)
Removes all mxCellOverlays in the graph for the given cell and all its descendants.
mxGraph.prototype.clearSelection = function()
Clears the selection using mxGraphSelectionModel.clear.
clearSelection: function()
Clears the current selection in the page.
mxPopupMenuHandler.prototype.clearSelectionOnBackground
Specifies if cells should be deselected if a popupmenu is displayed for the diagram background.
mxGraph.prototype.click = function(me)
Processes a singleclick on an optional cell and fires a click event.
Fires when the user clicks on the overlay.
Specifies the event name for click.
Fires in click after a click event.
mxCell.prototype.clone = function()
Returns a clone of the cell.
mxCellState.prototype.clone = function()
Returns a clone of this mxPoint.
mxPoint.prototype.clone = function()
Returns a clone of this mxPoint.
clone: function(obj,
transients,
shallow)
Recursively clones the specified object ignoring all fieldnames in the given array of transient fields.
mxGraphModel.prototype.cloneCell = function(cell)
Returns a deep clone of the given mxCell (including the children) which is created using cloneCells.
mxGraphModel.prototype.cloneCellImpl = function(cell,
mapping,
includeChildren)
Inner helper method for cloning cells recursively.
mxGraph.prototype.cloneCells = function(cells,
allowInvalidEdges)
Returns the clones for the given cells.
mxGraphModel.prototype.cloneCells = function(cells,
includeChildren)
Returns an array of clones for the given array of mxCells.
mxEdgeHandler.prototype.cloneEnabled
Specifies if cloning by control-drag is enabled.
mxGraphHandler.prototype.cloneEnabled
Specifies if cloning by control-drag is enabled.
mxGraph.prototype.cloneInvalidEdges
Specifies if edges that are cloned should be validated and only inserted if they are valid.
mxEdgeHandler.prototype.clonePreviewState = function(point,
terminal)
Returns a clone of the current preview state for the given point and terminal.
mxObjectCodec.prototype.cloneTemplate = function()
Returns a new instance of the template for this codec.
mxCell.prototype.cloneValue = function()
Returns a clone of the cell’s user object.
mxAbstractCanvas2D.prototype.close = function(x1,
y1,
x2,
y2,
x3,
y3)
Closes the current path.
mxPrintPreview.prototype.close = function()
Closes the print preview window.
mxXmlCanvas2D.prototype.close = function()
Closes the current path.
Specifies the event name for close.
Fires before the window is closed.
mxWindow.prototype.closeImage
URL of the image to be used for the close icon in the titlebar.
mxAbstractCanvas2D.prototype.closeOp
Holds the operator for closing curves.
mxVmlCanvas2D.prototype.closeOp
Holds the operator for closing curves.
Specifies the resource key for the label of the close button.
Maps from constructor names to codecs.
mxCell.prototype.collapsed
Specifies whether the cell is collapsed.
mxGraph.prototype.collapsedImage
Specifies the mxImage to indicate a collapsed state.
mxGraphModel.prototype.collapsedStateForCellChanged = function(cell,
collapsed)
Inner callback to update the collapsed state of the given mxCell using mxCell.setCollapsed and return the previous collapsed state.
mxGraph.prototype.collapseExpandResource
Specifies the resource key for the tooltip on the collapse/expand icon.
mxGraph.prototype.collapseToPreferredSize
Specifies if the cell size should be changed to the preferred size when a cell is first collapsed.
MedianCellSorter.prototype.compare = function(a,
b)
Compares two MedianCellSorters.
compare: function(p1,
p2)
Compares the given cell paths and returns -1 if p1 is smaller, 0 if p1 is equal and 1 if p1 is greater than p2.
WeightedCellSorter.prototype.compare = function(a,
b)
Compares two WeightedCellSorters.
mxXmlCanvas2D.prototype.compressed
Specifies if the output should be compressed by removing redundant calls.
mxStencil.prototype.computeAspect = function(shape,
x,
y,
w,
h,
direction)
Returns a rectangle that contains the offset in x and y and the horizontal and vertical scale in width and height used to draw this shape inside the given mxRectangle.
mxDefaultPopupMenu.prototype.config
XML node used as the description of new menu items.
mxEditor.prototype.configure = function (node)
Configures the editor using the specified node.
mxShape.prototype.configureCanvas = function(c,
x,
y,
w,
h)
Sets the state of the canvas for drawing the shape.
mxText.prototype.configureCanvas = function(c,
x,
y,
w,
h)
Sets the state of the canvas for drawing the shape.
mxCellRenderer.prototype.configureShape = function(state)
Configures the shape for the given cell state.
confirm: function(message)
Displays the given message in a confirm dialog.
mxConnectionHandler.prototype.connect = function(source,
target,
evt,
dropTarget)
Connects the given source and target using a new edge.
mxDefaultToolbar.prototype.connect = function(vertex,
evt,
source)
Handles a drop by connecting the given vertex to the given source cell.
mxEdgeHandler.prototype.connect = function(edge,
terminal,
isSource,
isClone,
me)
Changes the terminal or terminal point of the given edge in the graph model.
Fires between begin- and endUpdate in connect.
Specifies the event name for connect.
Specifies the event name for connectCell.
Fires between begin- and endUpdate in connectCell.
Defines the color to be used for the connect handle fill color.
mxCell.prototype.connectable
Specifies whether the cell is connectable.
mxGraph.prototype.connectableEdges
Specifies if edges are connectable.
mxGraph.prototype.connectCell = function(edge,
terminal,
source,
constraint)
Connects the specified end of the given edge to the given terminal using cellConnected and fires mxEvent.CONNECT_CELL while the transaction is in progress.
mxConnectionHandler.prototype.connectIconOffset
Holds the offset for connect icons during connection preview.
mxConnectionHandler.prototype.connectImage
mxImage that is used to trigger the creation of a new connection.
mxDefaultToolbar.prototype.connectOnDrop
Specifies if elements should be connected if new cells are dropped onto connectable elements.
mxGraphHandler.prototype.connectOnDrop
Specifies if drop events are interpreted as new connections if no other drop action is defined.
mxGraphHierarchyNode.prototype.connectsAsSource
Collection of hierarchy edges that have this node as a source
mxGraphHierarchyNode.prototype.connectsAsTarget
Collection of hierarchy edges that have this node as a target
Specifies the name of the console window.
mxGraph.prototype.constrainChild = function(cell)
Keeps the given cell inside the bounds returned by getCellContainmentArea for its parent, according to the rules defined by getOverlap and isConstrainChild.
mxGraph.prototype.constrainChildCells = function(cell)
Constrains the children of the given cell using constrainChild.
mxGraph.prototype.constrainChildren
Specifies if a child should be constrained inside the parent bounds after a move of the child.
mxGraph.prototype.constrainChildrenOnResize
Specifies if children should be constrained according to the constrainChildren switch if cells are resized (including via foldCells).
mxVertexHandler.prototype.constrainGroupByChildren
Specifies if the size of groups should be constrained by the children.
mxConnectionHandler.prototype.constraintHandler
Holds the mxConstraintHandler used for drawing and highlighting constraints.
mxEdgeHandler.prototype.constraintHandler
Holds the mxConstraintHandler used for drawing and highlighting constraints.
mxStencil.prototype.constraints
Holds an array of mxConnectionConstraints as defined in the shape.
consume: function(evt,
preventDefault,
stopPropagation)
Consumes the given event.
mxEventObject.prototype.consume = function()
Consumes the event.
mxMouseEvent.prototype.consume = function(preventDefault)
Sets consumed to true and invokes preventDefault on the native event if such a method is defined.
mxEditor.prototype.consumeCycleAttribute = function (cell)
Returns the next attribute in cycleAttributeValues or null, if not attribute should be used in the specified cell.
mxEventObject.prototype.consumed
Holds the consumed state.
mxMouseEvent.prototype.consumed
Holds the consumed state of this event.
mxGraph.prototype.consumeMouseEvent = function(evtName,
me,
sender)
Destroys the graph and all its resources.
mxPanningHandler.prototype.consumePanningTrigger = function(me)
Consumes the given mxMouseEvent if it was a panning trigger in mouseDown.
mxToolbar.prototype.container
Reference to the DOM nodes that contains the toolbar.
mxGraphModel.prototype.contains = function(cell)
Returns true if the model contains the given mxCell.
contains: function(bounds,
x,
y)
Returns true if the specified point (x, y) is contained in the given rectangle.
mxGraph.prototype.containsValidationErrorsResource
Specifies the resource key for the warning message to be displayed when a collapsed cell contains validation errors.
mxWindow.prototype.content
Reference to the DOM node that represents the window content.
mxWindow.prototype.contentHeightCorrection
Defines the correction factor for computing the height of the contentWrapper.
mxKeyHandler.prototype.controlKeys
Maps from keycodes to functions for pressed control keys.
mxKeyHandler.prototype.controlShiftKeys
Maps from keycodes to functions for pressed control and shift keys.
mxUrlConverter.prototype.convert = function(url)
Converts the given URL to an absolute URL with protol and domain.
mxObjectCodec.prototype.convertAttributeFromXml = function(dec,
attr,
obj)
Converts booleans and numeric values to the respective types.
mxObjectCodec.prototype.convertAttributeToXml = function(enc,
obj,
name,
value)
Converts true to “1” and false to “0” is isBooleanAttribute returns true.
this.converter
Holds the mxUrlConverter to convert image URLs.
mxEdgeHandler.prototype.convertPoint = function(point,
gridEnabled)
Converts the given point in-place from screen to unscaled, untranslated graph coordinates and applies the grid.
mxElbowEdgeHandler.prototype.convertPoint = function(point,
gridEnabled)
Converts the given point in-place from screen to unscaled, untranslated graph coordinates and applies the grid.
convertPoint: function(container,
x,
y)
Converts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.
mxGraph.prototype.convertValueToString = function(cell)
Returns the textual representation for the given cell.
mxConnectionHandler.prototype.convertWaypoint = function(point)
Converts the given point from screen coordinates to model coordinates.
copy: function(graph,
cells)
Copies the given array of mxCells from the specified graph to cells.Returns the original array of cells that has been cloned.
mxHandle.prototype.copyStyle = function(key)
Sets the cell style with the given name to the corresponding value in state.
mxCellStatePreview.prototype.count
Contains the number of entries in the map.
Current counter for objects.
mxMultiplicity.prototype.countError
Holds the localized error message to be displayed if the number of connections for which the rule applies is smaller than min or greater than max.
create: function(cell)
Creates the cell path for the given cell.
mxGraphView.prototype.createHtml = function()
Creates the DOM nodes for the HTML display.
mxShape.prototype.create = function(container)
Creates and returns the DOM node(s) for the shape in the given container.
mxXmlRequest.prototype.create = function()
Creates and returns the inner request object.
mxGraphView.prototype.createBackgroundPageShape = function(bounds)
Creates and returns the shape used as the background page.
Adds custom bends for the center of each segment.
mxEdgeHandler.prototype.createBends = function()
Creates and returns the bends used for modifying the edge.
mxElbowEdgeHandler.prototype.createBends = function()
Overrides mxEdgeHandler.createBends to create custom bends.
mxShape.prototype.createBoundingBox = function()
Returns a new rectangle that represents the bounding box of the bare shape with no shadows or strokewidths.
Helper method to create an mxRectangle around the given centerpoint with a width and height of 2*s or 6, if no s is given.
mxShape.prototype.createCanvas = function()
Destroys the given canvas which was used for drawing.
mxGraph.prototype.createCellEditor = function()
Creates a new mxCellEditor to be used in this graph.
mxCellRenderer.prototype.createCellOverlays = function(state)
Creates the actual shape for showing the overlay for the given cell state.
mxGraph.prototype.createCellRenderer = function()
Creates a new mxCellRenderer to be used in this graph.
mxSvgCanvas2D.prototype.createClip = function(x,
y,
w,
h)
Creates a clip for the given coordinates.
mxDefaultPopupMenu.prototype.createConditions = function(editor,
cell,
evt)
Evaluates the default conditions for the given context.
mxGraph.prototype.createConnectionHandler = function()
Creates and returns a new mxConnectionHandler to be used in this graph.
mxCellRenderer.prototype.createControl = function(state)
Creates the control for the given cell state.
mxVertexHandler.prototype.createCustomHandles = function()
Returns true if the aspect ratio if the cell should be maintained.
mxSvgCanvas2D.prototype.createDashPattern = function(scale)
Creates the SVG dash pattern for the given state.
mxStylesheet.prototype.createDefaultEdgeStyle = function()
Creates and returns the default edge style.
mxStylesheet.prototype.createDefaultVertexStyle = function()
Creates and returns the default vertex style.
mxEditor.prototype.createDiagramLayout = function ()
Creates the layout instance used to layout the swimlanes in the diagram.
mxSvgCanvas2D.prototype.createDiv = function(str,
align,
valign,
style,
overflow)
Private helper function to create SVG elements
mxDragSource.prototype.createDragElement = function(evt)
Creates and returns a clone of the dragElementPrototype or the element if the former is not defined.
mxConnectionHandler.prototype.createEdge = function(value,
source,
target,
style)
Creates and returns a new edge using factoryMethod if one exists.
mxEditor.prototype.createEdge = function (source,
target)
Uses defaultEdge as the prototype for creating new edges in the connection handler of the graph.
mxGraph.prototype.createEdge = function(parent,
id,
value,
source,
target,
style)
Hook method that creates the new edge for insertEdge.
mxGraph.prototype.createEdgeHandler = function(state)
Hooks to create a new mxEdgeHandler for the given mxCellState.
mxGraph.prototype.createEdgeSegmentHandler = function(state)
Hooks to create a new mxEdgeSegmentHandler for the given mxCellState.
mxConnectionHandler.prototype.createEdgeState = function(me)
Hook to return an mxCellState which may be used during the preview.
mxGraph.prototype.createElbowEdgeHandler = function(state)
Hooks to create a new mxElbowEdgeHandler for the given mxCellState.
mxSvgCanvas2D.prototype.createElement = function(tagName,
namespace)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.createElement = function(name)
Creates the given element using the document.
mxXmlCanvas2D.prototype.createElement = function(name)
Creates the given element using the owner document of root.
mxVmlCanvas2D.prototype.createFill = function()
Creates a fill for the current state.
mxSvgCanvas2D.prototype.createGradientId = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxEditor.prototype.createGraph = function ()
Creates the graph for the editor.
mxOutline.prototype.createGraph = function(container)
Creates the mxGraph used in the outline.
mxGraph.prototype.createGraphHandler = function()
Creates and returns a new mxGraphHandler to be used in this graph.
mxGraph.prototype.createGraphView = function()
Creates a new mxGraphView to be used in this graph.
mxEditor.prototype.createGroup = function ()
Creates and returns a clone of defaultGroup to be used as a new group cell in group.
mxGraph.prototype.createGroupCell = function(cells)
Hook for creating the group cell to hold the given array of mxCells if no group cell was given to the group function.
mxGuide.prototype.createGuideShape = function(horizontal)
Returns the mxShape to be used for painting the respective guide.
mxGraph.prototype.createHandler = function(state)
Creates a new handler for the given cell state.
mxGraph.prototype.createHandlers = function()
Creates the tooltip-, panning-, connection- and graph-handler (in this order).
mxEdgeHandler.prototype.createHandleShape = function(index)
Creates the shape used to display the given bend.
mxImageShape.prototype.createHtml = function()
Creates and returns the HTML DOM node(s) to represent this shape.
mxShape.prototype.createHtml = function()
Creates and returns the HTML DOM node(s) to represent this shape.
mxGraphView.prototype.createHtmlPane = function(width,
height)
Creates and returns a drawing pane in HTML (DIV).
mxConnectionHandler.prototype.createIcons = function(state)
Creates the array mxImageShapes that represent the connect icons for the given mxCellState.
mxGraphModel.prototype.createId = function(cell)
Hook method to create an Id for the specified cell.
mxGraphModel.prototype.createIds
Specifies if the model should automatically create Ids for new cells.
createImage: function(src)
Creates and returns an image (IMG node) or VML image (v:image) in IE6 in quirks mode.
mxCellRenderer.prototype.createIndicatorShape = function(state)
Creates the indicator shape for the given cell state.
mxGraphHierarchyModel.prototype.createInternalCells = function(layout,
vertices,
internalVertices)
Creates all edges in the internal model
mxSwimlaneModel.prototype.createInternalCells = function(layout,
vertices,
internalVertices)
Creates all edges in the internal model
mxCellRenderer.prototype.createLabel = function(state,
value)
Creates the label for the given cell state.
mxEdgeHandler.prototype.createLabelHandleShape = function()
Creates the shape used to display the the label handle.
mxEditor.prototype.createLayoutManager = function (graph)
Creates a layout manager for the swimlane and diagram layouts, that is, the locally defined inter- and intraswimlane layouts.
mxCompactTreeLayout.prototype.createLine = function(dx,
dy,
next)
mxConnectionHandler.prototype.createMarker = function()
Creates and returns the mxCellMarker used in marker.
mxConnector.prototype.createMarker = function(c,
pts,
source)
Prepares the marker by adding offsets in pts and returning a function to paint the marker.
mxEdgeHandler.prototype.createMarker = function()
Creates and returns the mxCellMarker used in marker.
createMarker: function(canvas,
shape,
type,
pe,
unitX,
unitY,
size,
source,
sw,
filled)
Returns a function to paint the given marker.
mxDefaultPopupMenu.prototype.createMenu = function(editor,
menu,
cell,
evt)
This function is called from mxEditor to add items to the given menu based on config.
mxCompactTreeLayout.prototype.createNode = function(cell)
mxPrintPreview.prototype.createPageSelector = function(vpages,
hpages)
Creates the page selector table.
mxGraph.prototype.createPanningHandler = function()
Creates and returns a new mxPanningHandler to be used in this graph.
mxGraph.prototype.createPanningManager = function()
Creates and returns an mxPanningManager.
mxVertexHandler.prototype.createParentHighlightShape = function(bounds)
Creates the shape used to draw the selection border.
mxEditor.prototype.createPopupMenu = function (menu,
cell,
evt)
Uses popupHandler to create the menu in the graph’s panning handler.
mxGraph.prototype.createPopupMenuHandler = function()
Creates and returns a new mxPopupMenuHandler to be used in this graph.
mxDragSource.prototype.createPreviewElement = function(graph)
Creates and returns an element which can be used as a preview in the given graph.
mxGraphHandler.prototype.createPreviewShape = function(bounds)
Creates the shape used to draw the preview for the given bounds.
mxEditor.prototype.createProperties = function (cell)
Creates and returns the DOM node that represents the contents of the properties dialog for the given cell.
mxVmlCanvas2D.prototype.createRect = function(nodeName,
x,
y,
w,
h)
Sets the glass gradient.
mxGraphModel.prototype.createRoot = function()
Creates a new root cell with a default layer (child 0).
mxGraph.prototype.createSelectionCellsHandler = function()
Creates and returns a new mxTooltipHandler to be used in this graph.
mxGraph.prototype.createSelectionModel = function()
Creates a new mxGraphSelectionModel to be used in this graph.
Creates the shape used to draw the selection border.
mxVertexHandler.prototype.createSelectionShape = function(bounds)
Creates the shape used to draw the selection border.
mxSvgCanvas2D.prototype.createShadow = function(node)
Creates a shadow for the given node.
mxVmlCanvas2D.prototype.createShadow = function(node,
filled,
stroked)
Creates a shadow for the given node.
mxVmlCanvas2D.prototype.createShadowFill = function()
Creates the fill for the shadow.
mxVmlCanvas2D.prototype.createShadowStroke = function()
Creates the stroke for the shadow.
mxCellHighlight.prototype.createShape = function()
Creates and returns the highlight shape for the given state.
mxCellRenderer.prototype.createShape = function(state)
Creates the shape for the given cell state.
mxConnectionHandler.prototype.createShape = function()
Creates the preview shape for new connections.
mxRubberband.prototype.createShape = function()
Creates the rubberband selection shape.
mxHandle.prototype.createShape = function(html)
Creates and returns the shape for this handle.
mxOutline.prototype.createSizer = function()
Creates the shape used as the sizer.
mxVertexHandler.prototype.createSizer = function(cursor,
index,
size,
fillColor)
Creates a sizer handle for the specified cursor and index and returns the new mxRectangleShape that represents the handle.
mxVertexHandler.prototype.createSizerShape = function(bounds,
index,
fillColor)
Creates the shape used for the sizer handle for the specified bounds an index.
mxAbstractCanvas2D.prototype.createState = function()
Creates the state of the this canvas.
mxGraphView.prototype.createState = function(cell)
Creates and returns an mxCellState for the given cell and initializes it using mxCellRenderer.initialize.
mxVmlCanvas2D.prototype.createStroke = function()
Creates a fill for the current state.
mxSvgCanvas2D.prototype.createStyle = function(x)
Creates the optional style section.
mxGraph.prototype.createStylesheet = function()
Creates a new mxGraphSelectionModel to be used in this graph.
mxPopupMenu.prototype.createSubmenu = function(parent)
Creates the nodes required to add submenu items inside the given parent item.
mxShape.prototype.createSvg = function()
Creates and returns the SVG node(s) to represent this shape.
mxShape.prototype.createSvgCanvas = function()
Creates and returns an mxSvgCanvas2D for rendering this shape.
mxSvgCanvas2D.prototype.createSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Creates the given SVG gradient.
mxEditor.prototype.createSwimlaneLayout = function ()
Creates the layout instance used to layout the children of each swimlane.
mxEditor.prototype.createSwimlaneManager = function (graph)
Sets the graph’s container using mxGraph.init.
mxConnectionHandler.prototype.createTarget
Specifies if createTargetVertex should be called if no target was under the mouse for the new connection.
mxConnectionHandler.prototype.createTargetVertex = function(evt,
source)
Hook method for creating new vertices on the fly if no target was under the mouse.
mxEditor.prototype.createTasks = function (div)
Updates the contents of the given DOM node to display the tasks associated with the current editor state.
Creates the innermost element that contains the HTML text.
mxCellEditor.prototype.createTextDiv = function()
Creates the textDiv used for measuring text.
mxSvgCanvas2D.prototype.createTolerance = function(node)
Creates a hit detection tolerance shape for the given node.
mxEditor.prototype.createToolbar = function ()
Creates the toolbar with no container.
mxGraph.prototype.createTooltipHandler = function()
Creates and returns a new mxTooltipHandler to be used in this graph.
mxVmlCanvas2D.prototype.createTransparentFill = function()
Creates a transparent fill.
mxShape.prototype.createTransparentSvgRectangle = function(x,
y,
w,
h)
Adds a transparent rectangle that catches all events.
mxGraphModel.prototype.createUndoableEdit = function()
Creates a new mxUndoableEdit that implements the notify function to fire a change and notify event through the mxUndoableEdit’s source.
mxAbstractCanvas2D.prototype.createUrlConverter = function()
Create a new mxUrlConverter and returns it.
mxGraph.prototype.createVertex = function(parent,
id,
value,
x,
y,
width,
height,
style,
relative)
Hook method that creates the new vertex for insertVertex.
mxGraph.prototype.createVertexHandler = function(state)
Hooks to create a new mxVertexHandler for the given mxCellState.
mxElbowEdgeHandler.prototype.createVirtualBend = function(dblClickHandler)
Creates a virtual bend that supports double clicking and calls mxGraph.flipEdge.
mxEdgeHandler.prototype.createVirtualBends = function()
Creates and returns the bends used for modifying the edge.
mxShape.prototype.createVml = function()
Creates and returns the VML node to represent this shape.
mxShape.prototype.createVmlCanvas = function()
Creates and returns an mxVmlCanvas2D for rendering this shape.
mxVmlCanvas2D.prototype.createVmlElement = function(name)
Creates a new element using createElement and prefixes the given name with mxClient.VML_PREFIX.
mxShape.prototype.createVmlGroup = function()
Returns the temporary element used for rendering in IE8 standards mode.
mxGraphView.prototype.createVmlPane = function(width,
height)
Creates a drawing pane in VML (group).
createXmlDocument: function()
Returns a new, empty XML document.
mxHierarchicalLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxSwimlaneLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxMedianHybridCrossingReduction.prototype.currentBestCrossings
The total number of crossings found in the best configuration so far
mxCellMarker.prototype.currentColor
Holds the current marker color.
mxDragSource.prototype.currentDropTarget
Holds the current drop target under the mouse.
mxGraphHandler.prototype.currentDx
Stores the x-coordinate of the current mouse move.
mxGraphHandler.prototype.currentDy
Stores the y-coordinate of the current mouse move.
mxGraphModel.prototype.currentEdit
Holds the changes for the current transaction.
mxEditor.prototype.currentFileResource
Specifies the resource key for the current file info.
mxDragSource.prototype.currentGraph
Reference to the mxGraph that is the current drop target.
mxDragSource.prototype.currentGuide
Holds an mxGuide for the currentGraph if dragPreview is not null.
mxDragSource.prototype.currentPoint
Holds the current drop location.
mxGraphView.prototype.currentRoot
mxCell that acts as the root of the displayed cell hierarchy.
mxRubberband.prototype.currentX
Holds the value of the x argument in the last call to update.
mxCoordinateAssignment.prototype.currentXDelta
The sum of x-displacements for the current iteration
mxRubberband.prototype.currentY
Holds the value of the y argument in the last call to update.
mxCellOverlay.prototype.cursor
Holds the cursor for the overlay.
mxHandle.prototype.cursor
Specifies the cursor to be used for this handle.
Defines the cursor for a movable bend.
Defines the cursor for a connectable state.
Defines the cursor for a movable label.
Defines the cursor for a movable edge.
Defines the cursor for a movable vertex.
Defines the cursor for a terminal handle.
Defines the cursor for a movable bend.
mxAbstractCanvas2D.prototype.curveOp
Contains the string used for bezier curves.
mxVmlCanvas2D.prototype.curveOp
Contains the string used for bezier curves.
mxAbstractCanvas2D.prototype.curveTo = function(x1,
y1,
x2,
y2,
x3,
y3)
Adds a bezier curve to the current path.
mxXmlCanvas2D.prototype.curveTo = function(x1,
y1,
x2,
y2,
x3,
y3)
Adds a bezier curve to the current path.
Start index for the custom handles in an mxMouseEvent.
cut: function(graph,
cells)
Cuts the given array of mxCells from the specified graph.
mxEditor.prototype.cycleAttribute = function (cell)
Uses the returned value from consumeCycleAttribute as the value for the cycleAttributeName key in the given cell’s style.
mxEditor.prototype.cycleAttributeIndex
Index of the last consumed attribute index.
mxEditor.prototype.cycleAttributeName
Name of the attribute to be assigned a cycleAttributeValues when inserting new swimlanes.
mxEditor.prototype.cycleAttributeValues
Specifies the attribute values to be cycled when inserting new swimlanes.
mxHierarchicalLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
mxSwimlaneLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
+
mxFastOrganicLayout.prototype.calcAttraction = function()
Calculates the attractive forces between all laid out nodes linked by edges
mxFastOrganicLayout.prototype.calcPositions = function()
Takes the displacements calculated for each cell and applies them to the local cache of cell positions.
mxFastOrganicLayout.prototype.calcRepulsion = function()
Calculates the repulsive forces between all laid out nodes
mxRadialTreeLayout.prototype.calcRowDims = function(row,
rowNum)
Recursive function to calculate the dimensions of each row
mxMedianHybridCrossingReduction.prototype.calculateCrossings = function(model)
Calculates the total number of edge crossing in the current graph.
mxCoordinateAssignment.prototype.calculatedWeightedValue = function(
   currentCell,
   collection
)
Calculates the priority the specified cell has based on the type of its cell and the cells it is connected to on the next layer
mxMedianHybridCrossingReduction.prototype.calculateRankCrossing = function(
   i,
   model
)
Calculates the number of edges crossings between the specified rank and the rank below it.
mxCoordinateAssignment.prototype.calculateWidestRank = function(graph,
model)
Calculates the width rank in the hierarchy.
mxGraph.prototype.canExportCell = function(cell)
Returns true if the given cell may be exported to the clipboard.
mxGraph.prototype.canImportCell = function(cell)
Returns true if the given cell may be imported from the clipboard.
mxUndoManager.prototype.canRedo = function()
Returns true if a redo is possible.
mxUndoManager.prototype.canUndo = function()
Returns true if an undo is possible.
mxGraphView.prototype.captureDocumentGesture
Specifies if a gesture should be captured when it goes outside of the graph container.
cascadeOpacity: function(graph,
cell,
opacity)
Sets the opacity on the given cell and its descendants.
cascadeOpacity: function(graph,
cell,
opacity)
See mxEffects.cascadeOpacity.
MedianCellSorter.prototype.cell
The cell whose median value is being calculated
mxCellState.prototype.cell
Reference to the mxCell that is represented by this state.
mxGraphHierarchyNode.prototype.cell
The graph cell this object represents.
WeightedCellSorter.prototype.cell
The cell whose median value is being calculated.
Specifies the event name for cellConnected.
Fires between begin- and endUpdate in cellConnected.
mxGraphModel.prototype.cellAdded = function(cell)
Inner callback to update cells when a cell has been added.
mxGraphSelectionModel.prototype.cellAdded = function(cell)
Inner callback to add the specified mxCell to the selection.
mxGraphModel.prototype.cellCloned = function(cell)
Hook for cloning the cell.
mxGraph.prototype.cellConnected = function(edge,
terminal,
source,
constraint)
Sets the new terminal for the given edge and resets the edge points if resetEdgesOnConnect is true.
mxGraph.prototype.cellEditor
Holds the mxCellEditor that is used as the in-place editing.
mxGraph.prototype.cellLabelChanged = function(cell,
value,
autoSize)
Sets the new label for a cell.
mxFastOrganicLayout.prototype.cellLocation
An array of locally stored co-ordinate positions for the vertices.
mxGraphModel.prototype.cellRemoved = function(cell)
Inner callback to update cells when a cell has been removed.
mxGraphSelectionModel.prototype.cellRemoved = function(cell)
Inner callback to remove the specified mxCell from the selection.
mxGraph.prototype.cellRenderer
Holds the mxCellRenderer for rendering the cells in the graph.
mxGraph.prototype.cellResized = function(cell,
bounds,
ignoreRelative,
recurse)
Resizes the parents recursively so that they contain the complete area of the resized child cell.
mxSpaceManager.prototype.cellResized = function(cell)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
Holds the array of mxCells currently in the clipboard.
mxGraphModel.prototype.cells
Maps from Ids to cells.
mxMorphing.prototype.cells
Optional array of cells to be animated.
Specifies the event name for cellsAdded.
Fires between begin- and endUpdate in cellsAdded.
Specifies the event name for cellsFolded.
Fires between begin- and endUpdate in cellsFolded.
Specifies the event name for cellsMoved.
Fires between begin- and endUpdate in cellsMoved.
Specifies the event name for cellsOrdered.
Fires between begin- and endUpdate in cellsOrdered.
Specifies the event name for cellsRemoved.
Fires between begin- and endUpdate in cellsRemoved.
Specifies the event name for cellsResized.
Fires between begin- and endUpdate in cellsResized.
Specifies the event name for cellsToggled.
mxGraph.prototype.cellsAdded = function(cells,
parent,
index,
source,
target,
absolute,
constrain)
Adds the specified cells to the given parent.
mxSwimlaneManager.prototype.cellsAdded = function(cells)
Called if any cells have been added.
mxGraph.prototype.cellsBendable
Specifies the return value for isCellsBendable.
mxGraph.prototype.cellsCloneable
Specifies the return value for isCellCloneable.
mxGraph.prototype.cellsDeletable
Specifies the return value for isCellDeletable.
mxGraph.prototype.cellsDisconnectable
Specifies the return value for isCellDisconntable.
mxGraph.prototype.cellsEditable
Specifies the return value for isCellEditable.
mxGraph.prototype.cellsFolded = function(cells,
collapse,
recurse,
checkFoldable)
Sets the collapsed state of the specified cells.
mxGraph.prototype.cellSizeUpdated = function(cell,
ignoreChildren)
Updates the size of the given cell in the model using getPreferredSizeForCell to get the new size.
mxGraph.prototype.cellsLocked
Specifies the return value for isCellLocked.
mxGraph.prototype.cellsMovable
Specifies the return value for isCellMovable.
mxGraph.prototype.cellsMoved = function(cells,
dx,
dy,
disconnect,
constrain,
extend)
Moves the specified cells by the given vector, disconnecting the cells using disconnectGraph is disconnect is true.
mxLayoutManager.prototype.cellsMoved = function(cells,
evt)
Called from the moveHandler.
mxGraph.prototype.cellsOrdered = function(cells,
back)
Moves the given cells to the front or back.
mxGraph.prototype.cellsRemoved = function(cells)
Removes the given cells from the model.
mxGraph.prototype.cellsResizable
Specifies the return value for isCellResizable.
mxGraph.prototype.cellsResized = function(cells,
bounds,
recurse)
Sets the bounds of the given cells and fires a mxEvent.CELLS_RESIZED event.
mxSpaceManager.prototype.cellsResized = function(cells)
Called from moveCellsIntoParent to invoke the move hook in the automatic layout of each modified cell’s parent.
mxSwimlaneManager.prototype.cellsResized = function(cells)
Called if any cells have been resizes.
mxGraph.prototype.cellsSelectable
Specifies the return value for isCellSelectable.
mxGraph.prototype.cellsToggled = function(cells,
show)
Sets the visible state of the specified cells.
mxGraph.prototype.center = function(horizontal,
vertical)
Centers the graph in the container.
mxGraph.prototype.centerZoom
Specifies if the zoom operations should go into the center of the actual diagram rather than going from top, left.
Specifies the event name for change.
Fires when an undoable edit is dispatched.
Fires after the selection changes by executing an mxSelectionChange.
mxAutoSaveManager.prototype.changeHandler
Holds the function that handles graph model changes.
mxConnectionHandler.prototype.changeHandler
Holds the change event listener for later removal.
mxEdgeHandler.prototype.changePoints = function(edge,
points,
clone)
Changes the control points of the given edge in the graph model.
mxUndoableEdit.prototype.changes
Array that contains the changes that make up this edit.
mxGraphSelectionModel.prototype.changeSelection = function(added,
removed)
Inner callback to add the specified mxCell to the selection.
mxEdgeHandler.prototype.changeTerminalPoint = function(edge,
point,
isSource,
clone)
Changes the terminal point of the given edge.
mxCompactTreeLayout.prototype.channelBuffer
The size of the vertical buffer in the center of inter-rank channels where edge control points should not be placed.
mxCoordinateAssignment.prototype.channelBuffer
The size of the vertical buffer in the center of inter-rank channels where edge control points should not be placed
mxMultiplicity.prototype.check = function(graph,
edge,
source,
target,
sourceOut,
targetIn)
Checks the multiplicity for the given arguments and returns the error for the given connection or null if the multiplicity does not apply.
mxShape.prototype.checkBounds = function()
Returns true if the bounds are not null and all of its variables are numeric.
mxText.prototype.checkBounds = function()
Returns true if the bounds are not null and all of its variables are numeric.
mxEdgeHandler.prototype.checkLabelHandle = function(b)
Checks if the label handle intersects the given bounds and moves it if it intersects.
mxMultiplicity.prototype.checkNeighbors = function(graph,
edge,
source,
target)
Checks if there are any valid neighbours in validNeighbors.
mxMultiplicity.prototype.checkTerminal = function(graph,
terminal,
edge)
Checks the given terminal cell and returns true if this rule applies.
mxVertexHandler.prototype.checkTolerance = function(me)
Checks if the coordinates for the given event are within the mxGraph.tolerance.
mxMultiplicity.prototype.checkType = function(graph,
value,
type,
attr,
attrValue)
Checks the type of the given value.
mxCell.prototype.children
Holds the child cells.
mxCircleLayout.prototype.circle = function(vertices,
r,
left,
top)
Executes the circular layout for the specified array of vertices and the given radius.
mxDictionary.prototype.clear = function()
Clears the dictionary.
mxGraphModel.prototype.clear = function()
Sets a new root using createRoot.
mxGraphSelectionModel.prototype.clear = function()
Clears the selection and fires a change event if the selection was not empty.
mxGraphView.prototype.clear = function(cell,
force,
recurse)
Removes the state of the given cell and all descendants if the given cell is not the current root.
clear: function(obj)
Removes the object id from the given object.
mxShape.prototype.clear = function()
Removes all child nodes and resets all CSS.
mxUndoManager.prototype.clear = function()
Clears the command history.
Specifies the event name for clear.
Fires after clear was invoked.
mxGraph.prototype.clearCellOverlays = function(cell)
Removes all mxCellOverlays in the graph for the given cell and all its descendants.
mxGraph.prototype.clearSelection = function()
Clears the selection using mxGraphSelectionModel.clear.
clearSelection: function()
Clears the current selection in the page.
mxPopupMenuHandler.prototype.clearSelectionOnBackground
Specifies if cells should be deselected if a popupmenu is displayed for the diagram background.
mxGraph.prototype.click = function(me)
Processes a singleclick on an optional cell and fires a click event.
Fires when the user clicks on the overlay.
Specifies the event name for click.
Fires in click after a click event.
mxCell.prototype.clone = function()
Returns a clone of the cell.
mxCellState.prototype.clone = function()
Returns a clone of this mxPoint.
mxPoint.prototype.clone = function()
Returns a clone of this mxPoint.
clone: function(obj,
transients,
shallow)
Recursively clones the specified object ignoring all fieldnames in the given array of transient fields.
mxGraphModel.prototype.cloneCell = function(cell)
Returns a deep clone of the given mxCell (including the children) which is created using cloneCells.
mxGraphModel.prototype.cloneCellImpl = function(cell,
mapping,
includeChildren)
Inner helper method for cloning cells recursively.
mxGraph.prototype.cloneCells = function(cells,
allowInvalidEdges)
Returns the clones for the given cells.
mxGraphModel.prototype.cloneCells = function(cells,
includeChildren)
Returns an array of clones for the given array of mxCells.
mxEdgeHandler.prototype.cloneEnabled
Specifies if cloning by control-drag is enabled.
mxGraphHandler.prototype.cloneEnabled
Specifies if cloning by control-drag is enabled.
mxGraph.prototype.cloneInvalidEdges
Specifies if edges that are cloned should be validated and only inserted if they are valid.
mxEdgeHandler.prototype.clonePreviewState = function(point,
terminal)
Returns a clone of the current preview state for the given point and terminal.
mxObjectCodec.prototype.cloneTemplate = function()
Returns a new instance of the template for this codec.
mxCell.prototype.cloneValue = function()
Returns a clone of the cell’s user object.
mxAbstractCanvas2D.prototype.close = function(x1,
y1,
x2,
y2,
x3,
y3)
Closes the current path.
mxPrintPreview.prototype.close = function()
Closes the print preview window.
mxXmlCanvas2D.prototype.close = function()
Closes the current path.
Specifies the event name for close.
Fires before the window is closed.
mxWindow.prototype.closeImage
URL of the image to be used for the close icon in the titlebar.
mxAbstractCanvas2D.prototype.closeOp
Holds the operator for closing curves.
mxVmlCanvas2D.prototype.closeOp
Holds the operator for closing curves.
Specifies the resource key for the label of the close button.
Maps from constructor names to codecs.
mxCell.prototype.collapsed
Specifies whether the cell is collapsed.
mxGraph.prototype.collapsedImage
Specifies the mxImage to indicate a collapsed state.
mxGraphModel.prototype.collapsedStateForCellChanged = function(cell,
collapsed)
Inner callback to update the collapsed state of the given mxCell using mxCell.setCollapsed and return the previous collapsed state.
mxGraph.prototype.collapseExpandResource
Specifies the resource key for the tooltip on the collapse/expand icon.
mxGraph.prototype.collapseToPreferredSize
Specifies if the cell size should be changed to the preferred size when a cell is first collapsed.
MedianCellSorter.prototype.compare = function(a,
b)
Compares two MedianCellSorters.
compare: function(p1,
p2)
Compares the given cell paths and returns -1 if p1 is smaller, 0 if p1 is equal and 1 if p1 is greater than p2.
WeightedCellSorter.prototype.compare = function(a,
b)
Compares two WeightedCellSorters.
mxXmlCanvas2D.prototype.compressed
Specifies if the output should be compressed by removing redundant calls.
mxStencil.prototype.computeAspect = function(shape,
x,
y,
w,
h,
direction)
Returns a rectangle that contains the offset in x and y and the horizontal and vertical scale in width and height used to draw this shape inside the given mxRectangle.
mxDefaultPopupMenu.prototype.config
XML node used as the description of new menu items.
mxEditor.prototype.configure = function (node)
Configures the editor using the specified node.
mxShape.prototype.configureCanvas = function(c,
x,
y,
w,
h)
Sets the state of the canvas for drawing the shape.
mxText.prototype.configureCanvas = function(c,
x,
y,
w,
h)
Sets the state of the canvas for drawing the shape.
mxCellRenderer.prototype.configureShape = function(state)
Configures the shape for the given cell state.
confirm: function(message)
Displays the given message in a confirm dialog.
mxConnectionHandler.prototype.connect = function(source,
target,
evt,
dropTarget)
Connects the given source and target using a new edge.
mxDefaultToolbar.prototype.connect = function(vertex,
evt,
source)
Handles a drop by connecting the given vertex to the given source cell.
mxEdgeHandler.prototype.connect = function(edge,
terminal,
isSource,
isClone,
me)
Changes the terminal or terminal point of the given edge in the graph model.
Fires between begin- and endUpdate in connect.
Specifies the event name for connect.
Specifies the event name for connectCell.
Fires between begin- and endUpdate in connectCell.
Defines the color to be used for the connect handle fill color.
mxCell.prototype.connectable
Specifies whether the cell is connectable.
mxGraph.prototype.connectableEdges
Specifies if edges are connectable.
mxGraph.prototype.connectCell = function(edge,
terminal,
source,
constraint)
Connects the specified end of the given edge to the given terminal using cellConnected and fires mxEvent.CONNECT_CELL while the transaction is in progress.
mxConnectionHandler.prototype.connectIconOffset
Holds the offset for connect icons during connection preview.
mxConnectionHandler.prototype.connectImage
mxImage that is used to trigger the creation of a new connection.
mxDefaultToolbar.prototype.connectOnDrop
Specifies if elements should be connected if new cells are dropped onto connectable elements.
mxGraphHandler.prototype.connectOnDrop
Specifies if drop events are interpreted as new connections if no other drop action is defined.
mxGraphHierarchyNode.prototype.connectsAsSource
Collection of hierarchy edges that have this node as a source
mxGraphHierarchyNode.prototype.connectsAsTarget
Collection of hierarchy edges that have this node as a target
Specifies the name of the console window.
mxGraph.prototype.constrainChild = function(cell)
Keeps the given cell inside the bounds returned by getCellContainmentArea for its parent, according to the rules defined by getOverlap and isConstrainChild.
mxGraph.prototype.constrainChildCells = function(cell)
Constrains the children of the given cell using constrainChild.
mxGraph.prototype.constrainChildren
Specifies if a child should be constrained inside the parent bounds after a move of the child.
mxGraph.prototype.constrainChildrenOnResize
Specifies if children should be constrained according to the constrainChildren switch if cells are resized (including via foldCells).
mxVertexHandler.prototype.constrainGroupByChildren
Specifies if the size of groups should be constrained by the children.
mxConnectionHandler.prototype.constraintHandler
Holds the mxConstraintHandler used for drawing and highlighting constraints.
mxEdgeHandler.prototype.constraintHandler
Holds the mxConstraintHandler used for drawing and highlighting constraints.
mxStencil.prototype.constraints
Holds an array of mxConnectionConstraints as defined in the shape.
consume: function(evt,
preventDefault,
stopPropagation)
Consumes the given event.
mxEventObject.prototype.consume = function()
Consumes the event.
mxMouseEvent.prototype.consume = function(preventDefault)
Sets consumed to true and invokes preventDefault on the native event if such a method is defined.
mxEditor.prototype.consumeCycleAttribute = function (cell)
Returns the next attribute in cycleAttributeValues or null, if not attribute should be used in the specified cell.
mxEventObject.prototype.consumed
Holds the consumed state.
mxMouseEvent.prototype.consumed
Holds the consumed state of this event.
mxGraph.prototype.consumeMouseEvent = function(evtName,
me,
sender)
Destroys the graph and all its resources.
mxPanningHandler.prototype.consumePanningTrigger = function(me)
Consumes the given mxMouseEvent if it was a panning trigger in mouseDown.
mxToolbar.prototype.container
Reference to the DOM nodes that contains the toolbar.
mxGraphModel.prototype.contains = function(cell)
Returns true if the model contains the given mxCell.
contains: function(bounds,
x,
y)
Returns true if the specified point (x, y) is contained in the given rectangle.
mxGraph.prototype.containsValidationErrorsResource
Specifies the resource key for the warning message to be displayed when a collapsed cell contains validation errors.
mxWindow.prototype.content
Reference to the DOM node that represents the window content.
mxWindow.prototype.contentHeightCorrection
Defines the correction factor for computing the height of the contentWrapper.
mxKeyHandler.prototype.controlKeys
Maps from keycodes to functions for pressed control keys.
mxKeyHandler.prototype.controlShiftKeys
Maps from keycodes to functions for pressed control and shift keys.
mxUrlConverter.prototype.convert = function(url)
Converts the given URL to an absolute URL with protol and domain.
mxObjectCodec.prototype.convertAttributeFromXml = function(dec,
attr,
obj)
Converts booleans and numeric values to the respective types.
mxObjectCodec.prototype.convertAttributeToXml = function(enc,
obj,
name,
value)
Converts true to “1” and false to “0” is isBooleanAttribute returns true.
this.converter
Holds the mxUrlConverter to convert image URLs.
mxSvgCanvas2D.prototype.convertHtml = function(val)
Converts the given HTML string to XHTML.
mxEdgeHandler.prototype.convertPoint = function(point,
gridEnabled)
Converts the given point in-place from screen to unscaled, untranslated graph coordinates and applies the grid.
mxElbowEdgeHandler.prototype.convertPoint = function(point,
gridEnabled)
Converts the given point in-place from screen to unscaled, untranslated graph coordinates and applies the grid.
convertPoint: function(container,
x,
y)
Converts the specified point (x, y) using the offset of the specified container and returns a new mxPoint with the result.
mxGraph.prototype.convertValueToString = function(cell)
Returns the textual representation for the given cell.
mxConnectionHandler.prototype.convertWaypoint = function(point)
Converts the given point from screen coordinates to model coordinates.
copy: function(graph,
cells)
Copies the given array of mxCells from the specified graph to cells.Returns the original array of cells that has been cloned.
mxHandle.prototype.copyStyle = function(key)
Sets the cell style with the given name to the corresponding value in state.
mxCellStatePreview.prototype.count
Contains the number of entries in the map.
Current counter for objects.
mxMultiplicity.prototype.countError
Holds the localized error message to be displayed if the number of connections for which the rule applies is smaller than min or greater than max.
create: function(cell)
Creates the cell path for the given cell.
mxGraphView.prototype.createHtml = function()
Creates the DOM nodes for the HTML display.
mxShape.prototype.create = function(container)
Creates and returns the DOM node(s) for the shape in the given container.
mxXmlRequest.prototype.create = function()
Creates and returns the inner request object.
mxGraphView.prototype.createBackgroundPageShape = function(bounds)
Creates and returns the shape used as the background page.
Adds custom bends for the center of each segment.
mxEdgeHandler.prototype.createBends = function()
Creates and returns the bends used for modifying the edge.
mxElbowEdgeHandler.prototype.createBends = function()
Overrides mxEdgeHandler.createBends to create custom bends.
mxShape.prototype.createBoundingBox = function()
Returns a new rectangle that represents the bounding box of the bare shape with no shadows or strokewidths.
Helper method to create an mxRectangle around the given centerpoint with a width and height of 2*s or 6, if no s is given.
mxShape.prototype.createCanvas = function()
Destroys the given canvas which was used for drawing.
mxGraph.prototype.createCellEditor = function()
Creates a new mxCellEditor to be used in this graph.
mxCellRenderer.prototype.createCellOverlays = function(state)
Creates the actual shape for showing the overlay for the given cell state.
mxGraph.prototype.createCellRenderer = function()
Creates a new mxCellRenderer to be used in this graph.
mxSvgCanvas2D.prototype.createClip = function(x,
y,
w,
h)
Creates a clip for the given coordinates.
mxDefaultPopupMenu.prototype.createConditions = function(editor,
cell,
evt)
Evaluates the default conditions for the given context.
mxGraph.prototype.createConnectionHandler = function()
Creates and returns a new mxConnectionHandler to be used in this graph.
mxCellRenderer.prototype.createControl = function(state)
Creates the control for the given cell state.
mxVertexHandler.prototype.createCustomHandles = function()
Returns true if the aspect ratio if the cell should be maintained.
mxSvgCanvas2D.prototype.createDashPattern = function(scale)
Creates the SVG dash pattern for the given state.
mxStylesheet.prototype.createDefaultEdgeStyle = function()
Creates and returns the default edge style.
mxStylesheet.prototype.createDefaultVertexStyle = function()
Creates and returns the default vertex style.
mxEditor.prototype.createDiagramLayout = function ()
Creates the layout instance used to layout the swimlanes in the diagram.
mxSvgCanvas2D.prototype.createDiv = function(str,
align,
valign,
style,
overflow)
Private helper function to create SVG elements
mxDragSource.prototype.createDragElement = function(evt)
Creates and returns a clone of the dragElementPrototype or the element if the former is not defined.
mxConnectionHandler.prototype.createEdge = function(value,
source,
target,
style)
Creates and returns a new edge using factoryMethod if one exists.
mxEditor.prototype.createEdge = function (source,
target)
Uses defaultEdge as the prototype for creating new edges in the connection handler of the graph.
mxGraph.prototype.createEdge = function(parent,
id,
value,
source,
target,
style)
Hook method that creates the new edge for insertEdge.
mxGraph.prototype.createEdgeHandler = function(state)
Hooks to create a new mxEdgeHandler for the given mxCellState.
mxGraph.prototype.createEdgeSegmentHandler = function(state)
Hooks to create a new mxEdgeSegmentHandler for the given mxCellState.
mxConnectionHandler.prototype.createEdgeState = function(me)
Hook to return an mxCellState which may be used during the preview.
mxGraph.prototype.createElbowEdgeHandler = function(state)
Hooks to create a new mxElbowEdgeHandler for the given mxCellState.
mxSvgCanvas2D.prototype.createElement = function(tagName,
namespace)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.createElement = function(name)
Creates the given element using the document.
mxXmlCanvas2D.prototype.createElement = function(name)
Creates the given element using the owner document of root.
mxVmlCanvas2D.prototype.createFill = function()
Creates a fill for the current state.
mxSvgCanvas2D.prototype.createGradientId = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxEditor.prototype.createGraph = function ()
Creates the graph for the editor.
mxOutline.prototype.createGraph = function(container)
Creates the mxGraph used in the outline.
mxGraph.prototype.createGraphHandler = function()
Creates and returns a new mxGraphHandler to be used in this graph.
mxGraph.prototype.createGraphView = function()
Creates a new mxGraphView to be used in this graph.
mxEditor.prototype.createGroup = function ()
Creates and returns a clone of defaultGroup to be used as a new group cell in group.
mxGraph.prototype.createGroupCell = function(cells)
Hook for creating the group cell to hold the given array of mxCells if no group cell was given to the group function.
mxGuide.prototype.createGuideShape = function(horizontal)
Returns the mxShape to be used for painting the respective guide.
mxGraph.prototype.createHandler = function(state)
Creates a new handler for the given cell state.
mxGraph.prototype.createHandlers = function()
Creates the tooltip-, panning-, connection- and graph-handler (in this order).
mxEdgeHandler.prototype.createHandleShape = function(index)
Creates the shape used to display the given bend.
mxImageShape.prototype.createHtml = function()
Creates and returns the HTML DOM node(s) to represent this shape.
mxShape.prototype.createHtml = function()
Creates and returns the HTML DOM node(s) to represent this shape.
mxGraphView.prototype.createHtmlPane = function(width,
height)
Creates and returns a drawing pane in HTML (DIV).
mxConnectionHandler.prototype.createIcons = function(state)
Creates the array mxImageShapes that represent the connect icons for the given mxCellState.
mxGraphModel.prototype.createId = function(cell)
Hook method to create an Id for the specified cell.
mxGraphModel.prototype.createIds
Specifies if the model should automatically create Ids for new cells.
createImage: function(src)
Creates and returns an image (IMG node) or VML image (v:image) in IE6 in quirks mode.
mxCellRenderer.prototype.createIndicatorShape = function(state)
Creates the indicator shape for the given cell state.
mxGraphHierarchyModel.prototype.createInternalCells = function(layout,
vertices,
internalVertices)
Creates all edges in the internal model
mxSwimlaneModel.prototype.createInternalCells = function(layout,
vertices,
internalVertices)
Creates all edges in the internal model
mxCellRenderer.prototype.createLabel = function(state,
value)
Creates the label for the given cell state.
mxEdgeHandler.prototype.createLabelHandleShape = function()
Creates the shape used to display the the label handle.
mxEditor.prototype.createLayoutManager = function (graph)
Creates a layout manager for the swimlane and diagram layouts, that is, the locally defined inter- and intraswimlane layouts.
mxCompactTreeLayout.prototype.createLine = function(dx,
dy,
next)
mxConnectionHandler.prototype.createMarker = function()
Creates and returns the mxCellMarker used in marker.
mxConnector.prototype.createMarker = function(c,
pts,
source)
Prepares the marker by adding offsets in pts and returning a function to paint the marker.
mxEdgeHandler.prototype.createMarker = function()
Creates and returns the mxCellMarker used in marker.
createMarker: function(canvas,
shape,
type,
pe,
unitX,
unitY,
size,
source,
sw,
filled)
Returns a function to paint the given marker.
mxDefaultPopupMenu.prototype.createMenu = function(editor,
menu,
cell,
evt)
This function is called from mxEditor to add items to the given menu based on config.
mxCompactTreeLayout.prototype.createNode = function(cell)
mxPrintPreview.prototype.createPageSelector = function(vpages,
hpages)
Creates the page selector table.
mxGraph.prototype.createPanningHandler = function()
Creates and returns a new mxPanningHandler to be used in this graph.
mxGraph.prototype.createPanningManager = function()
Creates and returns an mxPanningManager.
mxVertexHandler.prototype.createParentHighlightShape = function(bounds)
Creates the shape used to draw the selection border.
mxEditor.prototype.createPopupMenu = function (menu,
cell,
evt)
Uses popupHandler to create the menu in the graph’s panning handler.
mxGraph.prototype.createPopupMenuHandler = function()
Creates and returns a new mxPopupMenuHandler to be used in this graph.
mxDragSource.prototype.createPreviewElement = function(graph)
Creates and returns an element which can be used as a preview in the given graph.
mxGraphHandler.prototype.createPreviewShape = function(bounds)
Creates the shape used to draw the preview for the given bounds.
mxEditor.prototype.createProperties = function (cell)
Creates and returns the DOM node that represents the contents of the properties dialog for the given cell.
mxVmlCanvas2D.prototype.createRect = function(nodeName,
x,
y,
w,
h)
Sets the glass gradient.
mxGraphModel.prototype.createRoot = function()
Creates a new root cell with a default layer (child 0).
mxGraph.prototype.createSelectionCellsHandler = function()
Creates and returns a new mxTooltipHandler to be used in this graph.
mxGraph.prototype.createSelectionModel = function()
Creates a new mxGraphSelectionModel to be used in this graph.
Creates the shape used to draw the selection border.
mxVertexHandler.prototype.createSelectionShape = function(bounds)
Creates the shape used to draw the selection border.
mxSvgCanvas2D.prototype.createShadow = function(node)
Creates a shadow for the given node.
mxVmlCanvas2D.prototype.createShadow = function(node,
filled,
stroked)
Creates a shadow for the given node.
mxVmlCanvas2D.prototype.createShadowFill = function()
Creates the fill for the shadow.
mxVmlCanvas2D.prototype.createShadowStroke = function()
Creates the stroke for the shadow.
mxCellHighlight.prototype.createShape = function()
Creates and returns the highlight shape for the given state.
mxCellRenderer.prototype.createShape = function(state)
Creates the shape for the given cell state.
mxConnectionHandler.prototype.createShape = function()
Creates the preview shape for new connections.
mxRubberband.prototype.createShape = function()
Creates the rubberband selection shape.
mxHandle.prototype.createShape = function(html)
Creates and returns the shape for this handle.
mxOutline.prototype.createSizer = function()
Creates the shape used as the sizer.
mxVertexHandler.prototype.createSizer = function(cursor,
index,
size,
fillColor)
Creates a sizer handle for the specified cursor and index and returns the new mxRectangleShape that represents the handle.
mxVertexHandler.prototype.createSizerShape = function(bounds,
index,
fillColor)
Creates the shape used for the sizer handle for the specified bounds an index.
mxAbstractCanvas2D.prototype.createState = function()
Creates the state of the this canvas.
mxGraphView.prototype.createState = function(cell)
Creates and returns an mxCellState for the given cell and initializes it using mxCellRenderer.initialize.
mxVmlCanvas2D.prototype.createStroke = function()
Creates a fill for the current state.
mxSvgCanvas2D.prototype.createStyle = function(x)
Creates the optional style section.
mxGraph.prototype.createStylesheet = function()
Creates a new mxGraphSelectionModel to be used in this graph.
mxPopupMenu.prototype.createSubmenu = function(parent)
Creates the nodes required to add submenu items inside the given parent item.
mxShape.prototype.createSvg = function()
Creates and returns the SVG node(s) to represent this shape.
mxShape.prototype.createSvgCanvas = function()
Creates and returns an mxSvgCanvas2D for rendering this shape.
mxSvgCanvas2D.prototype.createSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Creates the given SVG gradient.
mxEditor.prototype.createSwimlaneLayout = function ()
Creates the layout instance used to layout the children of each swimlane.
mxEditor.prototype.createSwimlaneManager = function (graph)
Sets the graph’s container using mxGraph.init.
mxConnectionHandler.prototype.createTarget
Specifies if createTargetVertex should be called if no target was under the mouse for the new connection.
mxConnectionHandler.prototype.createTargetVertex = function(evt,
source)
Hook method for creating new vertices on the fly if no target was under the mouse.
mxEditor.prototype.createTasks = function (div)
Updates the contents of the given DOM node to display the tasks associated with the current editor state.
Creates the innermost element that contains the HTML text.
mxCellEditor.prototype.createTextDiv = function()
Creates the textDiv used for measuring text.
mxSvgCanvas2D.prototype.createTolerance = function(node)
Creates a hit detection tolerance shape for the given node.
mxEditor.prototype.createToolbar = function ()
Creates the toolbar with no container.
mxGraph.prototype.createTooltipHandler = function()
Creates and returns a new mxTooltipHandler to be used in this graph.
mxVmlCanvas2D.prototype.createTransparentFill = function()
Creates a transparent fill.
mxShape.prototype.createTransparentSvgRectangle = function(x,
y,
w,
h)
Adds a transparent rectangle that catches all events.
mxGraphModel.prototype.createUndoableEdit = function()
Creates a new mxUndoableEdit that implements the notify function to fire a change and notify event through the mxUndoableEdit’s source.
mxAbstractCanvas2D.prototype.createUrlConverter = function()
Create a new mxUrlConverter and returns it.
mxGraph.prototype.createVertex = function(parent,
id,
value,
x,
y,
width,
height,
style,
relative)
Hook method that creates the new vertex for insertVertex.
mxGraph.prototype.createVertexHandler = function(state)
Hooks to create a new mxVertexHandler for the given mxCellState.
mxElbowEdgeHandler.prototype.createVirtualBend = function(dblClickHandler)
Creates a virtual bend that supports double clicking and calls mxGraph.flipEdge.
mxEdgeHandler.prototype.createVirtualBends = function()
Creates and returns the bends used for modifying the edge.
mxShape.prototype.createVml = function()
Creates and returns the VML node to represent this shape.
mxShape.prototype.createVmlCanvas = function()
Creates and returns an mxVmlCanvas2D for rendering this shape.
mxVmlCanvas2D.prototype.createVmlElement = function(name)
Creates a new element using createElement and prefixes the given name with mxClient.VML_PREFIX.
mxShape.prototype.createVmlGroup = function()
Returns the temporary element used for rendering in IE8 standards mode.
mxGraphView.prototype.createVmlPane = function(width,
height)
Creates a drawing pane in VML (group).
createXmlDocument: function()
Returns a new, empty XML document.
mxHierarchicalLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxSwimlaneLayout.prototype.crossingStage = function(parent)
Executes the crossing stage using mxMedianHybridCrossingReduction.
mxMedianHybridCrossingReduction.prototype.currentBestCrossings
The total number of crossings found in the best configuration so far
mxCellMarker.prototype.currentColor
Holds the current marker color.
mxDragSource.prototype.currentDropTarget
Holds the current drop target under the mouse.
mxGraphHandler.prototype.currentDx
Stores the x-coordinate of the current mouse move.
mxGraphHandler.prototype.currentDy
Stores the y-coordinate of the current mouse move.
mxGraphModel.prototype.currentEdit
Holds the changes for the current transaction.
mxEditor.prototype.currentFileResource
Specifies the resource key for the current file info.
mxDragSource.prototype.currentGraph
Reference to the mxGraph that is the current drop target.
mxDragSource.prototype.currentGuide
Holds an mxGuide for the currentGraph if dragPreview is not null.
mxDragSource.prototype.currentPoint
Holds the current drop location.
mxGraphView.prototype.currentRoot
mxCell that acts as the root of the displayed cell hierarchy.
mxRubberband.prototype.currentX
Holds the value of the x argument in the last call to update.
mxCoordinateAssignment.prototype.currentXDelta
The sum of x-displacements for the current iteration
mxRubberband.prototype.currentY
Holds the value of the y argument in the last call to update.
mxCellOverlay.prototype.cursor
Holds the cursor for the overlay.
mxHandle.prototype.cursor
Specifies the cursor to be used for this handle.
Defines the cursor for a movable bend.
Defines the cursor for a connectable state.
Defines the cursor for a movable label.
Defines the cursor for a movable edge.
Defines the cursor for a movable vertex.
Defines the cursor for a terminal handle.
Defines the cursor for a movable bend.
mxAbstractCanvas2D.prototype.curveOp
Contains the string used for bezier curves.
mxVmlCanvas2D.prototype.curveOp
Contains the string used for bezier curves.
mxAbstractCanvas2D.prototype.curveTo = function(x1,
y1,
x2,
y2,
x3,
y3)
Adds a bezier curve to the current path.
mxXmlCanvas2D.prototype.curveTo = function(x1,
y1,
x2,
y2,
x3,
y3)
Adds a bezier curve to the current path.
Start index for the custom handles in an mxMouseEvent.
cut: function(graph,
cells)
Cuts the given array of mxCells from the specified graph.
mxEditor.prototype.cycleAttribute = function (cell)
Uses the returned value from consumeCycleAttribute as the value for the cycleAttributeName key in the given cell’s style.
mxEditor.prototype.cycleAttributeIndex
Index of the last consumed attribute index.
mxEditor.prototype.cycleAttributeName
Name of the attribute to be assigned a cycleAttributeValues when inserting new swimlanes.
mxEditor.prototype.cycleAttributeValues
Specifies the attribute values to be cycled when inserting new swimlanes.
mxHierarchicalLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
mxSwimlaneLayout.prototype.cycleStage = function(parent)
Executes the cycle stage using mxMinimumCycleRemover.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General4.html b/docs/js-api/index/General4.html index e218642de..3e2cc2b79 100644 --- a/docs/js-api/index/General4.html +++ b/docs/js-api/index/General4.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 damper, mxPanningManager
 dblClick, mxGraph
 dblClickAction, mxEditor
 dblClickRemoveEnabled, mxEdgeHandler
 debug, mxLog
 DEBUG, mxLog
 decode
 decodeAttribute, mxObjectCodec
 decodeAttributes, mxObjectCodec
 decodeCell, mxCodec
 decodeChild
 decodeChildren, mxObjectCodec
 decodeNode, mxObjectCodec
 decodeRoot, mxModelCodec
 decodeSimulateValues, mxXmlRequest
 decodeTemplates, mxEditorCodec
 DEFAULT_FONTFAMILY, mxConstants
 DEFAULT_FONTSIZE, mxConstants
 DEFAULT_FONTSTYLE, mxConstants
 DEFAULT_HOTSPOT, mxConstants
 DEFAULT_IMAGESIZE, mxConstants
 DEFAULT_INVALID_COLOR, mxConstants
 DEFAULT_MARKERSIZE, mxConstants
 DEFAULT_STARTSIZE, mxConstants
 DEFAULT_VALID_COLOR, mxConstants
 defaultEdge, mxEditor
 defaultEdgeShape, mxCellRenderer
 defaultEdgeStyle, mxEditor
 defaultGroup, mxEditor
 defaultLanguage, mxClient
 defaultLocalized, mxStencil
 defaultLoopStyle, mxGraph
 defaultOpacity, mxRubberband
 defaultOverlap
 defaultParent, mxGraph
 defaultShapes, mxCellRenderer
 defaultTextShape, mxCellRenderer
 defaultVertexShape, mxCellRenderer
 defs, mxSvgCanvas2D
 delay
 deltas, mxCellStatePreview
 desc, mxStencil
 destroy
 DESTROY
 destroyBends, mxEdgeHandler
 destroyCanvas, mxShape
 destroyed, mxTooltipHandler
 destroyFocusHighlight, mxConstraintHandler
 destroyIcons
 destroyOnClose, mxWindow
 destroyShapes, mxGraphHandler
 dfs
 dfsCount
 dialect
 DIALECT_MIXEDHTML, mxConstants
 DIALECT_PREFERHTML, mxConstants
 DIALECT_STRICTHTML, mxConstants
 DIALECT_SVG, mxConstants
 DIALECT_VML, mxConstants
 die, mxUndoableEdit
 DIRECTION_EAST, mxConstants
 DIRECTION_MASK_ALL, mxConstants
 DIRECTION_MASK_EAST, mxConstants
 DIRECTION_MASK_NONE, mxConstants
 DIRECTION_MASK_NORTH, mxConstants
 DIRECTION_MASK_SOUTH, mxConstants
 DIRECTION_MASK_WEST, mxConstants
 DIRECTION_NORTH, mxConstants
 DIRECTION_SOUTH, mxConstants
 DIRECTION_WEST, mxConstants
 disableContextMenu
 disableEdgeStyle
 disconnect, mxChildChange
 DISCONNECT, mxEvent
 disconnectGraph, mxGraph
 disconnectOnMove, mxGraph
 dispose, mxClient
 dispX, mxFastOrganicLayout
 dispY, mxFastOrganicLayout
 div, mxRubberband
 document, mxCodec
 DONE, mxEvent
 doneResource
 doResizeContainer, mxGraph
 DOUBLE_CLICK
 doubleClickOrientationResource, mxElbowEdgeHandler
 doubleTapEnabled, mxGraph
 doubleTapTimeout, mxGraph
 doubleTapTolerance, mxGraph
 DOWN, mxEvent
 dragElement, mxDragSource
 dragElementOpacity, mxDragSource
 dragElementZIndex, mxDragSource
 dragEnter, mxDragSource
 dragExit, mxDragSource
 dragOffset, mxDragSource
 dragOver, mxDragSource
 drawCellState, mxImageExport
 drawHighlight, mxCellHighlight
 drawNode, mxStencil
 drawOverlays, mxImageExport
 drawPreview
 drawShape
 drawState, mxImageExport
 drawText, mxImageExport
 Drilldown, mxGraph
 drillHandler, mxConnectionHandler
 drop
 DROP_TARGET_COLOR, mxConstants
 dropEnabled, mxGraph
 dropHandler, mxDragSource
 dummyVertexWidth, mxSwimlaneLayout
 dummyVertices, mxSwimlaneLayout
 dx, mxPanningHandler
 dy, mxPanningHandler
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 damper, mxPanningManager
 dblClick, mxGraph
 dblClickAction, mxEditor
 dblClickRemoveEnabled, mxEdgeHandler
 debug, mxLog
 DEBUG, mxLog
 decode
 decodeAttribute, mxObjectCodec
 decodeAttributes, mxObjectCodec
 decodeCell, mxCodec
 decodeChild
 decodeChildren, mxObjectCodec
 decodeNode, mxObjectCodec
 decodeRoot, mxModelCodec
 decodeSimulateValues, mxXmlRequest
 decodeTemplates, mxEditorCodec
 DEFAULT_FONTFAMILY, mxConstants
 DEFAULT_FONTSIZE, mxConstants
 DEFAULT_FONTSTYLE, mxConstants
 DEFAULT_HOTSPOT, mxConstants
 DEFAULT_IMAGESIZE, mxConstants
 DEFAULT_INVALID_COLOR, mxConstants
 DEFAULT_MARKERSIZE, mxConstants
 DEFAULT_STARTSIZE, mxConstants
 DEFAULT_VALID_COLOR, mxConstants
 defaultEdge, mxEditor
 defaultEdgeShape, mxCellRenderer
 defaultEdgeStyle, mxEditor
 defaultGroup, mxEditor
 defaultLanguage, mxClient
 defaultLocalized, mxStencil
 defaultLoopStyle, mxGraph
 defaultOpacity, mxRubberband
 defaultOverlap
 defaultParent, mxGraph
 defaultShapes, mxCellRenderer
 defaultTextShape, mxCellRenderer
 defaultVertexShape, mxCellRenderer
 defs, mxSvgCanvas2D
 delay
 deltas, mxCellStatePreview
 desc, mxStencil
 destroy
 DESTROY
 destroyBends, mxEdgeHandler
 destroyCanvas, mxShape
 destroyed, mxTooltipHandler
 destroyFocusHighlight, mxConstraintHandler
 destroyIcons
 destroyOnClose, mxWindow
 destroyShapes, mxGraphHandler
 dfs
 dfsCount
 dialect
 DIALECT_MIXEDHTML, mxConstants
 DIALECT_PREFERHTML, mxConstants
 DIALECT_STRICTHTML, mxConstants
 DIALECT_SVG, mxConstants
 DIALECT_VML, mxConstants
 die, mxUndoableEdit
 DIRECTION_EAST, mxConstants
 DIRECTION_MASK_ALL, mxConstants
 DIRECTION_MASK_EAST, mxConstants
 DIRECTION_MASK_NONE, mxConstants
 DIRECTION_MASK_NORTH, mxConstants
 DIRECTION_MASK_SOUTH, mxConstants
 DIRECTION_MASK_WEST, mxConstants
 DIRECTION_NORTH, mxConstants
 DIRECTION_SOUTH, mxConstants
 DIRECTION_WEST, mxConstants
 disableContextMenu
 disableEdgeStyle
 disconnect, mxChildChange
 DISCONNECT, mxEvent
 disconnectGraph, mxGraph
 disconnectOnMove, mxGraph
 dispose, mxClient
 dispX, mxFastOrganicLayout
 dispY, mxFastOrganicLayout
 div, mxRubberband
 document, mxCodec
 DONE, mxEvent
 doneResource
 doResizeContainer, mxGraph
 DOUBLE_CLICK
 doubleClickOrientationResource, mxElbowEdgeHandler
 doubleTapEnabled, mxGraph
 doubleTapTimeout, mxGraph
 doubleTapTolerance, mxGraph
 DOWN, mxEvent
 dragElement, mxDragSource
 dragElementOpacity, mxDragSource
 dragElementZIndex, mxDragSource
 dragEnter, mxDragSource
 dragExit, mxDragSource
 dragOffset, mxDragSource
 dragOver, mxDragSource
 drawCellState, mxImageExport
 drawHighlight, mxCellHighlight
 drawNode, mxStencil
 drawOverlays, mxImageExport
 drawPreview
 drawShape
 drawState, mxImageExport
 drawText, mxImageExport
 Drilldown, mxGraph
 drillHandler, mxConnectionHandler
 drop
 DROP_TARGET_COLOR, mxConstants
 dropEnabled, mxGraph
 dropHandler, mxDragSource
 dummyVertexWidth, mxSwimlaneLayout
 dummyVertices, mxSwimlaneLayout
 dx, mxPanningHandler
 dy, mxPanningHandler
-
mxPanningManager.prototype.damper
Damper value for the panning.
mxGraph.prototype.dblClick = function(evt,
cell)
Processes a doubleclick on an optional cell and fires a dblclick event.
mxEditor.prototype.dblClickAction
Specifies the name of the action to be executed when a cell is double clicked.
mxEdgeHandler.prototype.dblClickRemoveEnabled
Specifies if removing bends by double click is enabled.
debug: function()
Adds all arguments to the console if DEBUG is enabled.
Specifies if the output for debug should be visible in the console.
mxCodec.prototype.decode = function(node,
into)
Decodes the given XML node.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
codec.decode = function(dec,
node,
into)
Uses the given node as the config for mxDefaultPopupMenu.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
mxObjectCodec.prototype.decode = function(dec,
node,
into)
Parses the given node into the object or returns a new object representing the given node.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
mxObjectCodec.prototype.decodeAttribute = function(dec,
attr,
obj)
Reads the given attribute into the specified object.
mxObjectCodec.prototype.decodeAttributes = function(dec,
node,
obj)
Decodes all attributes of the given node using decodeAttribute.
mxCodec.prototype.decodeCell = function(node,
restoreStructures)
Decodes cells that have been encoded using inversion, ie.
codec.decodeChild = function(dec,
child,
obj)
Overrides decode child to handle special child nodes.
codec.decodeChild = function(dec,
child,
obj)
Overrides decode child to handle special child nodes.
mxObjectCodec.prototype.decodeChild = function(dec,
child,
obj)
Reads the specified child into the given object.
mxObjectCodec.prototype.decodeChildren = function(dec,
node,
obj)
Decodec all children of the given node using decodeChild.
mxObjectCodec.prototype.decodeNode = function(dec,
node,
obj)
Calls decodeAttributes and decodeChildren for the given node.
codec.decodeRoot = function(dec,
root,
model)
Reads the cells into the graph model.
mxXmlRequest.prototype.decodeSimulateValues
Specifies if request values should be decoded as URIs before setting the textarea value in simulate.
Decodes the cells from the given node as templates.
Defines the default family for all fonts in points.
Defines the default size for all fonts in points.
Defines the default style for all fonts.
Defines the portion of the cell which is to be used as a connectable region.
Defines the default width and height for images used in the label shape.
Specifies the default invalid color.
Defines the default size for all markers.
Defines the default start size for swimlanes.
Specifies the default valid color.
mxEditor.prototype.defaultEdge
Prototype edge cell that is used for creating new edges.
mxCellRenderer.prototype.defaultEdgeShape
Defines the default shape for edges.
mxEditor.prototype.defaultEdgeStyle
Specifies the edge style to be returned in getEdgeStyle.
mxEditor.prototype.defaultGroup
Prototype group cell that is used for creating new groups.
Defines the default language which is used in the common resource files.
mxStencil.defaultLocalized
Static global variable that specifies the default value for the localized attribute of the text element.
mxGraph.prototype.defaultLoopStyle
mxEdgeStyle to be used for loops.
mxRubberband.prototype.defaultOpacity
Specifies the default opacity to be used for the rubberband div.
mxCellOverlay.prototype.defaultOverlap
Defines the overlapping for the overlay, that is, the proportional distance from the origin to the point defined by the alignment.
mxGraph.prototype.defaultOverlap
Value returned by getOverlap if isAllowOverlapParent returns true for the given cell.
mxGraph.prototype.defaultParent
Specifies the default parent to be used to insert new cells.
mxCellRenderer.prototype.defaultShapes
Static array that contains the globally registered shapes which are known to all instances of this class.
mxCellRenderer.prototype.defaultTextShape
Defines the default shape for labels.
mxCellRenderer.prototype.defaultVertexShape
Defines the default shape for vertices.
this.defs
Reference to the defs section of the SVG document.
mxAnimation.prototype.delay
Specifies the delay between the animation steps.
mxPanningManager.prototype.delay
Delay in milliseconds for the panning.
mxTooltipHandler.prototype.delay
Delay to show the tooltip in milliseconds.
mxCellStatePreview.prototype.deltas
Reference to the enclosing mxGraph.
mxStencil.prototype.desc
Holds the XML node with the stencil description.
mxAutoSaveManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxCellEditor.prototype.destroy = function ()
Destroys the editor and removes all associated resources.
mxCellHighlight.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxCellMarker.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxCellRenderer.prototype.destroy = function(state)
Destroys the shapes associated with the given cell state.
mxCellState.prototype.destroy = function ()
Destroys the state and all associated resources.
mxCellTracker.prototype.destroy = function()
Destroys the object and all its resources and DOM nodes.
mxConnectionHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxConstraintHandler.prototype.destroy = function()
Destroy this handler.
mxDefaultKeyHandler.prototype.destroy = function ()
Destroys the handler associated with this object.
mxDefaultToolbar.prototype.destroy = function ()
Destroys the toolbar associated with this object and removes all installed listeners.
mxEdgeHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxEditor.prototype.destroy = function ()
Removes the editor and all its associated resources.
mxGraph.prototype.destroy = function()
Destroys the graph and all its resources.
mxGraphHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxGraphView.prototype.destroy = function()
Destroys the view and all its resources.
mxGuide.prototype.destroy = function()
Destroys all resources that this object uses.
mxKeyHandler.prototype.destroy = function()
Destroys the handler and all its references into the DOM.
mxLayoutManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxOutline.prototype.destroy = function()
Destroy this outline and removes all listeners from source.
mxPanningHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxPopupMenu.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxPopupMenuHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxRubberband.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxSelectionCellsHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxShape.prototype.destroy = function()
Destroys the shape by removing it from the DOM and releasing the DOM node associated with the shape using mxEvent.release.
mxSpaceManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxSwimlaneManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxTemporaryCellStates.prototype.destroy = function()
Returns the top, left corner as a new mxPoint.
mxToolbar.prototype.destroy = function ()
Removes the toolbar and all its associated resources.
mxTooltipHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxHandle.prototype.destroy = function()
Destroys this handle.
mxWindow.prototype.destroy = function()
Destroys the window and removes all associated resources.
Specifies the event name for destroy.
Fires before the window is destroyed.
mxEdgeHandler.prototype.destroyBends = function(bends)
Destroys all elements in bends.
mxShape.prototype.destroyCanvas = function(canvas)
Destroys the given canvas which was used for drawing.
mxTooltipHandler.prototype.destroyed
True if this handler was destroyed using destroy.
mxConstraintHandler.prototype.destroyFocusHighlight = function()
Destroys the focusHighlight if one exists.
mxConnectionHandler.prototype.destroyIcons = function()
Destroys the connect icons and resets the respective state.
mxConstraintHandler.prototype.destroyIcons = function()
Destroys the focusIcons if they exist.
mxWindow.prototype.destroyOnClose
Specifies if the window should be destroyed when it is closed.
mxGraphHandler.prototype.destroyShapes = function()
Destroy the preview and highlight shapes.
mxCompactTreeLayout.prototype.dfs = function(cell,
parent)
Does a depth first search starting at the specified cell.
mxGraphHierarchyModel.prototype.dfs = function(parent,
root,
connectingEdge,
visitor,
seen,
layer)
Performs a depth first search on the internal hierarchy model
mxSwimlaneModel.prototype.dfs = function(parent,
root,
connectingEdge,
visitor,
seen,
layer)
Performs a depth first search on the internal hierarchy model
mxGraphHierarchyModel.prototype.dfsCount
Count of the number of times the ancestor dfs has been used.
mxSwimlaneModel.prototype.dfsCount
Count of the number of times the ancestor dfs has been used.
mxGraph.prototype.dialect
Dialect to be used for drawing the graph.
mxShape.prototype.dialect
Holds the dialect in which the shape is to be painted.
Defines the mixed HTML display dialect name.
Defines the preferred HTML display dialect name.
Defines the strict HTML display dialect.
Defines the SVG display dialect name.
Defines the VML display dialect name.
mxUndoableEdit.prototype.die = function()
Hook to free resources after the edit has been removed from the command history.
Constant for direction east.
Bitwise mask for all directions.
Bitwise mask for east direction.
Constant for no direction.
Bitwise mask for north direction.
Bitwise mask for south direction.
Bitwise mask for west direction.
Constant for direction north.
Constant for direction south.
Constant for direction west.
mxEditor.prototype.disableContextMenu
Specifies if the context menu should be disabled in the graph container.
disableContextMenu: function()
Disables the context menu for the given element.
mxCircleLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
mxFastOrganicLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
mxHierarchicalLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
mxSwimlaneLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
Disconnects the given cell recursively from its terminals and stores the previous terminal in the cell’s terminals.
Specifies the event name for disconnect.
mxGraph.prototype.disconnectGraph = function(cells)
Disconnects the given edges from the terminals which are not in the given array.
mxGraph.prototype.disconnectOnMove
Specifies if edges should be disconnected from their terminals when they are moved.
dispose: function()
Frees up memory in IE by resolving cyclic dependencies between the DOM and the JavaScript objects.
mxFastOrganicLayout.prototype.dispX
An array of locally stored X co-ordinate displacements for the vertices.
mxFastOrganicLayout.prototype.dispY
An array of locally stored Y co-ordinate displacements for the vertices.
mxRubberband.prototype.div
Holds the DIV element which is currently visible.
mxCodec.prototype.document
The owner document of the codec.
Specifies the event name for done.
mxGraphSelectionModel.prototype.doneResource
Specifies the resource key for the status message after a long operation.
mxGraphView.prototype.doneResource
Specifies the resource key for the status message after a long operation.
mxGraph.prototype.doResizeContainer = function(width,
height)
Resizes the container for the given graph width and height.
Specifies the event name for doubleClick.
Fires in dblClick after a double click.
mxElbowEdgeHandler.prototype.doubleClickOrientationResource
Specifies the resource key for the tooltip to be displayed on the single control point for routed edges.
mxGraph.prototype.doubleTapEnabled
Specifies if double taps on touch-based devices should be handled as a double click.
mxGraph.prototype.doubleTapTimeout
Specifies the timeout for double taps and non-native double clicks.
mxGraph.prototype.doubleTapTolerance
Specifies the tolerance for double taps and double clicks in quirks mode.
Specifies the event name for down.
mxDragSource.prototype.dragElement
Holds the DOM node that is used to represent the drag preview.
mxDragSource.prototype.dragElementOpacity
Opacity of the drag element in %.
mxDragSource.prototype.dragElementZIndex
ZIndex for the drag element.
mxDragSource.prototype.dragEnter = function(graph,
evt)
Actives the given graph as a drop target.
mxDragSource.prototype.dragExit = function(graph,
evt)
Deactivates the given graph as a drop target.
mxDragSource.prototype.dragOffset
mxPoint that specifies the offset of the dragElement.
mxDragSource.prototype.dragOver = function(graph,
evt)
Implements autoscroll, updates the currentPoint, highlights any drop targets and updates the preview.
mxImageExport.prototype.drawCellState = function(state,
canvas)
Draws the given state to the given canvas.
mxCellHighlight.prototype.drawHighlight = function()
Creates and returns the highlight shape for the given state.
mxStencil.prototype.drawNode = function(canvas,
shape,
node,
aspect,
disableShadow)
Draws this stencil inside the given bounds.
mxImageExport.prototype.drawOverlays = function(state,
canvas)
Draws the overlays for the given state.
mxConnectionHandler.prototype.drawPreview = function()
Redraws the preview edge using the color and width returned by getEdgeColor and getEdgeWidth.
mxEdgeHandler.prototype.drawPreview = function()
Redraws the preview.
mxVertexHandler.prototype.drawPreview = function()
Redraws the preview.
mxImageExport.prototype.drawShape = function(state,
canvas)
Draws the shape of the given state.
mxStencil.prototype.drawShape = function(canvas,
shape,
x,
y,
w,
h)
Draws this stencil inside the given bounds.
mxImageExport.prototype.drawState = function(state,
canvas)
Draws the given state and all its descendants to the given canvas.
mxImageExport.prototype.drawText = function(state,
canvas)
Draws the text of the given state.
mxConnectionHandler.prototype.drillHandler
Holds the drill event listener for later removal.
mxDefaultToolbar.prototype.drop = function(vertex,
evt,
target)
Handles a drop from a toolbar item to the graph.
mxDragSource.prototype.drop = function(graph,
evt,
dropTarget,
x,
y)
Returns the drop target for the given graph and coordinates.
Defines the color to be used for the highlighting target parent cells (for drag and drop).
mxGraph.prototype.dropEnabled
Specifies the return value for isDropEnabled.
mxDragSource.prototype.dropHandler
Holds the DOM node that is used to represent the drag preview.
mxSwimlaneLayout.prototype.dummyVertexWidth
The cell width of any dummy vertices inserted
mxSwimlaneLayout.prototype.dummyVertices
Holds an array of mxCell of dummy vertices inserted during the layout to pad out empty swimlanes
mxPanningHandler.prototype.dx
Holds the current horizontal offset.
mxPanningHandler.prototype.dy
Holds the current vertical offset.
+
mxPanningManager.prototype.damper
Damper value for the panning.
mxGraph.prototype.dblClick = function(evt,
cell)
Processes a doubleclick on an optional cell and fires a dblclick event.
mxEditor.prototype.dblClickAction
Specifies the name of the action to be executed when a cell is double clicked.
mxEdgeHandler.prototype.dblClickRemoveEnabled
Specifies if removing bends by double click is enabled.
debug: function()
Adds all arguments to the console if DEBUG is enabled.
Specifies if the output for debug should be visible in the console.
mxCodec.prototype.decode = function(node,
into)
Decodes the given XML node.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
codec.decode = function(dec,
node,
into)
Uses the given node as the config for mxDefaultPopupMenu.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
mxObjectCodec.prototype.decode = function(dec,
node,
into)
Parses the given node into the object or returns a new object representing the given node.
codec.decode = function(dec,
node,
into)
Reads a sequence of the following child nodes and attributes:
mxObjectCodec.prototype.decodeAttribute = function(dec,
attr,
obj)
Reads the given attribute into the specified object.
mxObjectCodec.prototype.decodeAttributes = function(dec,
node,
obj)
Decodes all attributes of the given node using decodeAttribute.
mxCodec.prototype.decodeCell = function(node,
restoreStructures)
Decodes cells that have been encoded using inversion, ie.
codec.decodeChild = function(dec,
child,
obj)
Overrides decode child to handle special child nodes.
codec.decodeChild = function(dec,
child,
obj)
Overrides decode child to handle special child nodes.
mxObjectCodec.prototype.decodeChild = function(dec,
child,
obj)
Reads the specified child into the given object.
mxObjectCodec.prototype.decodeChildren = function(dec,
node,
obj)
Decodec all children of the given node using decodeChild.
mxObjectCodec.prototype.decodeNode = function(dec,
node,
obj)
Calls decodeAttributes and decodeChildren for the given node.
codec.decodeRoot = function(dec,
root,
model)
Reads the cells into the graph model.
mxXmlRequest.prototype.decodeSimulateValues
Specifies if request values should be decoded as URIs before setting the textarea value in simulate.
Decodes the cells from the given node as templates.
Defines the default family for all fonts in points.
Defines the default size for all fonts in points.
Defines the default style for all fonts.
Defines the portion of the cell which is to be used as a connectable region.
Defines the default width and height for images used in the label shape.
Specifies the default invalid color.
Defines the default size for all markers.
Defines the default start size for swimlanes.
Specifies the default valid color.
mxEditor.prototype.defaultEdge
Prototype edge cell that is used for creating new edges.
mxCellRenderer.prototype.defaultEdgeShape
Defines the default shape for edges.
mxEditor.prototype.defaultEdgeStyle
Specifies the edge style to be returned in getEdgeStyle.
mxEditor.prototype.defaultGroup
Prototype group cell that is used for creating new groups.
Defines the default language which is used in the common resource files.
mxStencil.defaultLocalized
Static global variable that specifies the default value for the localized attribute of the text element.
mxGraph.prototype.defaultLoopStyle
mxEdgeStyle to be used for loops.
mxRubberband.prototype.defaultOpacity
Specifies the default opacity to be used for the rubberband div.
mxCellOverlay.prototype.defaultOverlap
Defines the overlapping for the overlay, that is, the proportional distance from the origin to the point defined by the alignment.
mxGraph.prototype.defaultOverlap
Value returned by getOverlap if isAllowOverlapParent returns true for the given cell.
mxGraph.prototype.defaultParent
Specifies the default parent to be used to insert new cells.
mxCellRenderer.prototype.defaultShapes
Static array that contains the globally registered shapes which are known to all instances of this class.
mxCellRenderer.prototype.defaultTextShape
Defines the default shape for labels.
mxCellRenderer.prototype.defaultVertexShape
Defines the default shape for vertices.
this.defs
Reference to the defs section of the SVG document.
mxAnimation.prototype.delay
Specifies the delay between the animation steps.
mxPanningManager.prototype.delay
Delay in milliseconds for the panning.
mxTooltipHandler.prototype.delay
Delay to show the tooltip in milliseconds.
mxCellStatePreview.prototype.deltas
Reference to the enclosing mxGraph.
mxStencil.prototype.desc
Holds the XML node with the stencil description.
mxAutoSaveManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxCellEditor.prototype.destroy = function ()
Destroys the editor and removes all associated resources.
mxCellHighlight.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxCellMarker.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxCellRenderer.prototype.destroy = function(state)
Destroys the shapes associated with the given cell state.
mxCellState.prototype.destroy = function ()
Destroys the state and all associated resources.
mxCellTracker.prototype.destroy = function()
Destroys the object and all its resources and DOM nodes.
mxConnectionHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxConstraintHandler.prototype.destroy = function()
Destroy this handler.
mxDefaultKeyHandler.prototype.destroy = function ()
Destroys the handler associated with this object.
mxDefaultToolbar.prototype.destroy = function ()
Destroys the toolbar associated with this object and removes all installed listeners.
mxEdgeHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxEditor.prototype.destroy = function ()
Removes the editor and all its associated resources.
mxGraph.prototype.destroy = function()
Destroys the graph and all its resources.
mxGraphHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxGraphView.prototype.destroy = function()
Destroys the view and all its resources.
mxGuide.prototype.destroy = function()
Destroys all resources that this object uses.
mxKeyHandler.prototype.destroy = function()
Destroys the handler and all its references into the DOM.
mxLayoutManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxOutline.prototype.destroy = function()
Destroy this outline and removes all listeners from source.
mxPanningHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxPopupMenu.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxPopupMenuHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxRubberband.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxSelectionCellsHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxShape.prototype.destroy = function()
Destroys the shape by removing it from the DOM and releasing the DOM node associated with the shape using mxEvent.release.
mxSpaceManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxSwimlaneManager.prototype.destroy = function()
Removes all handlers from the graph and deletes the reference to it.
mxTemporaryCellStates.prototype.destroy = function()
Returns the top, left corner as a new mxPoint.
mxToolbar.prototype.destroy = function ()
Removes the toolbar and all its associated resources.
mxTooltipHandler.prototype.destroy = function()
Destroys the handler and all its resources and DOM nodes.
mxHandle.prototype.destroy = function()
Destroys this handle.
mxWindow.prototype.destroy = function()
Destroys the window and removes all associated resources.
Specifies the event name for destroy.
Fires before the window is destroyed.
mxEdgeHandler.prototype.destroyBends = function(bends)
Destroys all elements in bends.
mxShape.prototype.destroyCanvas = function(canvas)
Destroys the given canvas which was used for drawing.
mxTooltipHandler.prototype.destroyed
True if this handler was destroyed using destroy.
mxConstraintHandler.prototype.destroyFocusHighlight = function()
Destroys the focusHighlight if one exists.
mxConnectionHandler.prototype.destroyIcons = function()
Destroys the connect icons and resets the respective state.
mxConstraintHandler.prototype.destroyIcons = function()
Destroys the focusIcons if they exist.
mxWindow.prototype.destroyOnClose
Specifies if the window should be destroyed when it is closed.
mxGraphHandler.prototype.destroyShapes = function()
Destroy the preview and highlight shapes.
mxCompactTreeLayout.prototype.dfs = function(cell,
parent)
Does a depth first search starting at the specified cell.
mxGraphHierarchyModel.prototype.dfs = function(parent,
root,
connectingEdge,
visitor,
seen,
layer)
Performs a depth first search on the internal hierarchy model
mxSwimlaneModel.prototype.dfs = function(parent,
root,
connectingEdge,
visitor,
seen,
layer)
Performs a depth first search on the internal hierarchy model
mxGraphHierarchyModel.prototype.dfsCount
Count of the number of times the ancestor dfs has been used.
mxSwimlaneModel.prototype.dfsCount
Count of the number of times the ancestor dfs has been used.
mxGraph.prototype.dialect
Dialect to be used for drawing the graph.
mxShape.prototype.dialect
Holds the dialect in which the shape is to be painted.
Defines the mixed HTML display dialect name.
Defines the preferred HTML display dialect name.
Defines the strict HTML display dialect.
Defines the SVG display dialect name.
Defines the VML display dialect name.
mxUndoableEdit.prototype.die = function()
Hook to free resources after the edit has been removed from the command history.
Constant for direction east.
Bitwise mask for all directions.
Bitwise mask for east direction.
Constant for no direction.
Bitwise mask for north direction.
Bitwise mask for south direction.
Bitwise mask for west direction.
Constant for direction north.
Constant for direction south.
Constant for direction west.
mxEditor.prototype.disableContextMenu
Specifies if the context menu should be disabled in the graph container.
disableContextMenu: function()
Disables the context menu for the given element.
mxCircleLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
mxFastOrganicLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
mxHierarchicalLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
mxSwimlaneLayout.prototype.disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
Disconnects the given cell recursively from its terminals and stores the previous terminal in the cell’s terminals.
Specifies the event name for disconnect.
mxGraph.prototype.disconnectGraph = function(cells)
Disconnects the given edges from the terminals which are not in the given array.
mxGraph.prototype.disconnectOnMove
Specifies if edges should be disconnected from their terminals when they are moved.
dispose: function()
Frees up memory in IE by resolving cyclic dependencies between the DOM and the JavaScript objects.
mxFastOrganicLayout.prototype.dispX
An array of locally stored X co-ordinate displacements for the vertices.
mxFastOrganicLayout.prototype.dispY
An array of locally stored Y co-ordinate displacements for the vertices.
mxRubberband.prototype.div
Holds the DIV element which is currently visible.
mxCodec.prototype.document
The owner document of the codec.
Specifies the event name for done.
mxGraphSelectionModel.prototype.doneResource
Specifies the resource key for the status message after a long operation.
mxGraphView.prototype.doneResource
Specifies the resource key for the status message after a long operation.
mxGraph.prototype.doResizeContainer = function(width,
height)
Resizes the container for the given graph width and height.
Specifies the event name for doubleClick.
Fires in dblClick after a double click.
mxElbowEdgeHandler.prototype.doubleClickOrientationResource
Specifies the resource key for the tooltip to be displayed on the single control point for routed edges.
mxGraph.prototype.doubleTapEnabled
Specifies if double taps on touch-based devices should be handled as a double click.
mxGraph.prototype.doubleTapTimeout
Specifies the timeout for double taps and non-native double clicks.
mxGraph.prototype.doubleTapTolerance
Specifies the tolerance for double taps and double clicks in quirks mode.
Specifies the event name for down.
mxDragSource.prototype.dragElement
Holds the DOM node that is used to represent the drag preview.
mxDragSource.prototype.dragElementOpacity
Opacity of the drag element in %.
mxDragSource.prototype.dragElementZIndex
ZIndex for the drag element.
mxDragSource.prototype.dragEnter = function(graph,
evt)
Actives the given graph as a drop target.
mxDragSource.prototype.dragExit = function(graph,
evt)
Deactivates the given graph as a drop target.
mxDragSource.prototype.dragOffset
mxPoint that specifies the offset of the dragElement.
mxDragSource.prototype.dragOver = function(graph,
evt)
Implements autoscroll, updates the currentPoint, highlights any drop targets and updates the preview.
mxImageExport.prototype.drawCellState = function(state,
canvas)
Draws the given state to the given canvas.
mxCellHighlight.prototype.drawHighlight = function()
Creates and returns the highlight shape for the given state.
mxStencil.prototype.drawNode = function(canvas,
shape,
node,
aspect,
disableShadow)
Draws this stencil inside the given bounds.
mxImageExport.prototype.drawOverlays = function(state,
canvas)
Draws the overlays for the given state.
mxConnectionHandler.prototype.drawPreview = function()
Redraws the preview edge using the color and width returned by getEdgeColor and getEdgeWidth.
mxEdgeHandler.prototype.drawPreview = function()
Redraws the preview.
mxVertexHandler.prototype.drawPreview = function()
Redraws the preview.
mxImageExport.prototype.drawShape = function(state,
canvas)
Draws the shape of the given state.
mxStencil.prototype.drawShape = function(canvas,
shape,
x,
y,
w,
h)
Draws this stencil inside the given bounds.
mxImageExport.prototype.drawState = function(state,
canvas)
Draws the given state and all its descendants to the given canvas.
mxImageExport.prototype.drawText = function(state,
canvas)
Draws the text of the given state.
mxConnectionHandler.prototype.drillHandler
Holds the drill event listener for later removal.
mxDefaultToolbar.prototype.drop = function(vertex,
evt,
target)
Handles a drop from a toolbar item to the graph.
mxDragSource.prototype.drop = function(graph,
evt,
dropTarget,
x,
y)
Returns the drop target for the given graph and coordinates.
Defines the color to be used for the highlighting target parent cells (for drag and drop).
mxGraph.prototype.dropEnabled
Specifies the return value for isDropEnabled.
mxDragSource.prototype.dropHandler
Holds the DOM node that is used to represent the drag preview.
mxSwimlaneLayout.prototype.dummyVertexWidth
The cell width of any dummy vertices inserted
mxSwimlaneLayout.prototype.dummyVertices
Holds an array of mxCell of dummy vertices inserted during the layout to pad out empty swimlanes
mxPanningHandler.prototype.dx
Holds the current horizontal offset.
mxPanningHandler.prototype.dy
Holds the current vertical offset.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General5.html b/docs/js-api/index/General5.html index 899fd8233..29fe38cbc 100644 --- a/docs/js-api/index/General5.html +++ b/docs/js-api/index/General5.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 ease, mxMorphing
 edge, mxCell
 EDGE_SELECTION_COLOR, mxConstants
 EDGE_SELECTION_STROKEWIDTH, mxConstants
 edgeLabelsMovable, mxGraph
 edgeMapper
 edgeRouting, mxCompactTreeLayout
 edges
 edgesSet
 edgeState, mxConnectionHandler
 edgeStyle, mxCoordinateAssignment
 EDGESTYLE_ELBOW, mxConstants
 EDGESTYLE_ENTITY_RELATION, mxConstants
 EDGESTYLE_LOOP, mxConstants
 EDGESTYLE_ORTHOGONAL, mxConstants
 EDGESTYLE_SEGMENT, mxConstants
 EDGESTYLE_SIDETOSIDE, mxConstants
 EDGESTYLE_TOPTOBOTTOM, mxConstants
 EDITING_STARTED
 EDITING_STOPPED
 editingCell, mxCellEditor
 editor
 ELBOW_HORIZONTAL, mxConstants
 ELBOW_VERTICAL, mxConstants
 ElbowConnector, mxEdgeStyle
 element, mxDragSource
 ellipse
 EllipsePerimeter, mxPerimeter
 EMPTY_ARRAY, mxGraph
 emptyLabelText, mxCellEditor
 enabled
 encode
 encodeCell
 encodeDefaults, mxCodec
 encodeObject
 encodeValue, mxObjectCodec
 end, mxAbstractCanvas2D
 END_EDIT
 END_UPDATE
 endingUpdate, mxGraphModel
 endUpdate, mxGraphModel
 enter, mxLog
 enterGroup, mxGraph
 enterStopsCellEditing, mxGraph
 ENTITY_SEGMENT, mxConstants
 EntityRelation, mxEdgeStyle
 equalEntries, mxUtils
 equalPoints, mxUtils
 equals
 error
 errorImage, mxUtils
 errorResource, mxUtils
 escape
 ESCAPE
 escapeEnabled, mxGraph
 escapePostData, mxEditor
 eval, mxUtils
 evaluateAttribute, mxStencil
 evaluateTextAttribute, mxStencil
 Event processing, mxGraph
 eventListeners, mxEventSource
 Events
 eventsEnabled, mxEventSource
 eventSource, mxEventSource
 evt, mxMouseEvent
 exclude, mxObjectCodec
 execute
 EXECUTE
 EXECUTED
 executeLayout, mxLayoutManager
 exitGroup, mxGraph
 expandedImage, mxGraph
 exportEnabled, mxGraph
 extend, mxUtils
 extendedDfs
 extendParent, mxGraph
 extendParents
 extendParentsOnAdd, mxGraph
 extension, mxResources
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 ease, mxMorphing
 edge, mxCell
 EDGE_SELECTION_COLOR, mxConstants
 EDGE_SELECTION_STROKEWIDTH, mxConstants
 edgeLabelsMovable, mxGraph
 edgeMapper
 edgeRouting, mxCompactTreeLayout
 edges
 edgesSet
 edgeState, mxConnectionHandler
 edgeStyle, mxHierarchicalLayout
 EDGESTYLE_ELBOW, mxConstants
 EDGESTYLE_ENTITY_RELATION, mxConstants
 EDGESTYLE_LOOP, mxConstants
 EDGESTYLE_ORTHOGONAL, mxConstants
 EDGESTYLE_SEGMENT, mxConstants
 EDGESTYLE_SIDETOSIDE, mxConstants
 EDGESTYLE_TOPTOBOTTOM, mxConstants
 EDITING_STARTED
 EDITING_STOPPED
 editingCell, mxCellEditor
 editor
 ELBOW_HORIZONTAL, mxConstants
 ELBOW_VERTICAL, mxConstants
 ElbowConnector, mxEdgeStyle
 element, mxDragSource
 ellipse
 EllipsePerimeter, mxPerimeter
 EMPTY_ARRAY, mxGraph
 emptyLabelText, mxCellEditor
 enabled
 encode
 encodeCell
 encodeDefaults, mxCodec
 encodeObject
 encodeValue, mxObjectCodec
 end, mxAbstractCanvas2D
 END_EDIT
 END_UPDATE
 endingUpdate, mxGraphModel
 endUpdate, mxGraphModel
 enter, mxLog
 enterGroup, mxGraph
 enterStopsCellEditing, mxGraph
 ENTITY_SEGMENT, mxConstants
 EntityRelation, mxEdgeStyle
 equalEntries, mxUtils
 equalPoints, mxUtils
 equals
 error
 errorImage, mxUtils
 errorResource, mxUtils
 escape
 ESCAPE
 escapeEnabled, mxGraph
 escapePostData, mxEditor
 eval, mxUtils
 evaluateAttribute, mxStencil
 evaluateTextAttribute, mxStencil
 Event processing, mxGraph
 eventListeners, mxEventSource
 Events
 eventsEnabled, mxEventSource
 eventSource, mxEventSource
 evt, mxMouseEvent
 exclude, mxObjectCodec
 execute
 EXECUTE
 EXECUTED
 executeLayout, mxLayoutManager
 exitGroup, mxGraph
 expandedImage, mxGraph
 exportEnabled, mxGraph
 extend, mxUtils
 extendedDfs
 extendParent, mxGraph
 extendParents
 extendParentsOnAdd, mxGraph
 extension, mxResources
-
mxMorphing.prototype.ease
Ease-off for movement towards the given vector.
mxCell.prototype.edge
Specifies whether the cell is an edge.
Defines the color to be used for the selection border of edges.
Defines the strokewidth to be used for edge selections.
mxGraph.prototype.edgeLabelsMovable
Specifies the return value for edges in isLabelMovable.
mxGraphHierarchyModel.prototype.edgeMapper
Map from graph edges to internal model edges
mxSwimlaneModel.prototype.edgeMapper
Map from graph edges to internal model edges
mxCompactTreeLayout.prototype.edgeRouting
Whether or not to apply the internal tree edge routing.
mxCell.prototype.edges
Holds the edges.
mxGraphHierarchyEdge.prototype.edges
The graph edge(s) this object represents.
A cache of edges whose source terminal is the key
A cache of edges whose source terminal is the key
mxConnectionHandler.prototype.edgeState
Optional mxCellState that represents the preview edge while the handler is active.
mxCoordinateAssignment.prototype.edgeStyle
The style to apply between cell layers to edge segments
Name of the elbow edge style.
Name of the entity relation edge style.
Name of the loop edge style.
Name of the generic orthogonal edge style.
Name of the generic segment edge style.
Name of the side to side edge style.
Name of the top to bottom edge style.
Specifies the event name for editingStarted.
Fires after the in-place editor starts in startEditingAtCell.
Specifies the event name for editingStopped.
Fires after the in-place editor stops in stopEditing.
mxCellEditor.prototype.editingCell
Reference to the mxCell that is currently being edited.
mxDefaultKeyHandler.prototype.editor
Reference to the enclosing mxEditor.
mxDefaultToolbar.prototype.editor
Reference to the enclosing mxEditor.
Constant for elbow horizontal.
Constant for elbow vertical.
ElbowConnector: function (state,
source,
target,
points,
result)
Uses either SideToSide or TopToBottom depending on the horizontal flag in the cell style.
mxDragSource.prototype.element
Reference to the DOM node which was made draggable.
mxSvgCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Sets the current path to an ellipse.
mxXmlCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Puts an ellipse into the drawing buffer.
EllipsePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes an elliptic perimeter.
mxGraph.prototype.EMPTY_ARRAY
Immutable empty array instance.
mxCellEditor.prototype.emptyLabelText
Text to be displayed for empty labels.
mxAutoSaveManager.prototype.enabled
Specifies if event handling is enabled.
mxCellMarker.prototype.enabled
Specifies if the marker is enabled.
mxConnectionHandler.prototype.enabled
Specifies if events are handled.
mxConstraintHandler.prototype.enabled
Specifies if events are handled.
mxDragSource.prototype.enabled
Specifies if this drag source is enabled.
mxGraph.prototype.enabled
Specifies the return value for isEnabled.
mxGraphHandler.prototype.enabled
Specifies if events are handled.
mxKeyHandler.prototype.enabled
Specifies if events are handled.
mxLayoutManager.prototype.enabled
Specifies if event handling is enabled.
mxOutline.prototype.enabled
Specifies if events are handled.
mxPopupMenu.prototype.enabled
Specifies if events are handled.
mxRubberband.prototype.enabled
Specifies if events are handled.
mxSelectionCellsHandler.prototype.enabled
Specifies if events are handled.
mxSpaceManager.prototype.enabled
Specifies if event handling is enabled.
mxSwimlaneManager.prototype.enabled
Specifies if event handling is enabled.
mxToolbar.prototype.enabled
Specifies if events are handled.
mxTooltipHandler.prototype.enabled
Specifies if events are handled.
mxUrlConverter.prototype.enabled
Specifies if the converter is enabled.
mxCodec.prototype.encode = function(obj)
Encodes the specified object and returns the resulting XML node.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
view)
Encodes the given mxGraphView using encodeCell starting at the model’s root.
mxObjectCodec.prototype.encode = function(enc,
obj)
Encodes the specified object and returns a node representing then given object.
codec.encode = function(enc,
obj)
Encodes a stylesheet.
mxCodec.prototype.encodeCell = function(cell,
node,
includeChildren)
Encoding of cell hierarchies is built-into the core, but is a higher-level function that needs to be explicitely used by the respective object encoders (eg.
codec.encodeCell = function(enc,
view,
cell)
Recursively encodes the specifed cell.
mxCodec.prototype.encodeDefaults
Specifies if default values should be encoded.
codec.encodeObject = function(enc,
obj,
node)
Encodes the given mxGraphModel by writing a (flat) XML sequence of cell nodes as produced by the mxCellCodec.
mxObjectCodec.prototype.encodeObject = function(enc,
obj,
node)
Encodes the value of each member in then given obj into the given node using encodeValue.
mxObjectCodec.prototype.encodeValue = function(enc,
obj,
name,
value,
node)
Converts the given value according to the mappings and id-refs in this codec and uses writeAttribute to write the attribute into the given node.
mxAbstractCanvas2D.prototype.end = function()
Empty implementation for backwards compatibility.
Specifies the event name for endEdit.
Fires after the updateLevel was changed from 1 to 0.
Fires after a set of changeswas executed in undo or redo.
Specifies the event name for endUpdate.
Fires after the updateLevel was decreased in endUpdate but before any notification or change dispatching.
mxGraphModel.prototype.endingUpdate
True if the program flow is currently inside endUpdate.
mxGraphModel.prototype.endUpdate = function()
Decrements the updateLevel by one and fires an undo event if the updateLevel reaches 0.
enter: function(string)
Writes the specified string to the console if TRACE is true and returns the current time in milliseconds.
mxGraph.prototype.enterGroup = function(cell)
Uses the given cell as the root of the displayed cell hierarchy.
mxGraph.prototype.enterStopsCellEditing
If true, pressing the enter key without pressing control or shift will stop editing and accept the new value.
Defines the length of the horizontal segment of an Entity Relation.
EntityRelation: function (state,
source,
target,
points,
result)
Implements an entity relation style for edges (as used in database schema diagrams).
equalEntries: function(a,
b)
Returns true if all entries of the given objects are equal.
equalPoints: function(a,
b)
Compares all mxPoints in the given lists.
mxGeometry.prototype.equals = function(obj)
Returns true if the given object equals this geometry.
mxPoint.prototype.equals = function(obj)
Returns true if the given object equals this point.
mxRectangle.prototype.equals = function(obj)
Returns true if the given object equals this rectangle.
mxConnectionHandler.prototype.error
Holds the current validation error while connections are being created.
mxEdgeHandler.prototype.error
Holds the current validation error while a connection is being changed.
error: function(message,
width,
close,
icon)
Displays the given error message in a new mxWindow of the given width.
Defines the image used for error dialogs.
Specifies the resource key for the title of the error window.
mxGraph.prototype.escape = function(evt)
Processes an escape keystroke.
mxKeyHandler.prototype.escape = function(evt)
Hook to process ESCAPE keystrokes.
Fires when the escape key is pressed.
Specifies the event name for escape.
mxGraph.prototype.escapeEnabled
Specifies if mxKeyHandler should invoke escape when the escape key is pressed.
mxEditor.prototype.escapePostData
Specifies if the data in the post request for saving a diagram should be converted using encodeURIComponent.
eval: function(expr)
Evaluates the given expression using eval and returns the JavaScript object that represents the expression result.
mxStencil.prototype.evaluateAttribute = function(node,
attribute,
shape)
Gets the attribute for the given name from the given node.
mxStencil.prototype.evaluateTextAttribute = function(node,
attribute,
state)
Gets the given attribute as a text.
mxEventSource.prototype.eventListeners
Holds the event names and associated listeners in an array.
mxEventSource.prototype.eventsEnabled
Specifies if events can be fired.
mxEventSource.prototype.eventSource
Optional source for events.
mxMouseEvent.prototype.evt
Holds the inner event object.
mxObjectCodec.prototype.exclude
Array containing the variable names that should be ignored by the codec.
mxCellAttributeChange.prototype.execute = function()
Changes the attribute of the cell’s user object by using mxCell.setAttribute.
mxChildChange.prototype.execute = function()
Changes the parent of child using mxGraphModel.parentForCellChanged and removes or restores the cell’s connections.
mxCircleLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxCollapseChange.prototype.execute = function()
Changes the collapsed state of cell to previous using mxGraphModel.collapsedStateForCellChanged.
mxCompactTreeLayout.prototype.execute = function(parent,
root)
Implements mxGraphLayout.execute.
mxCompositeLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute by executing all layouts in a single transaction.
mxCoordinateAssignment.prototype.execute = function(parent)
A basic horizontal coordinate assignment algorithm
mxCurrentRootChange.prototype.execute = function()
Changes the current root of the view.
mxEdgeLabelLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxEditor.prototype.execute = function (actionname,
cell,
evt)
Executes the function with the given name in actions passing the editor instance and given cell as the first and second argument.
mxFastOrganicLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxGeometryChange.prototype.execute = function()
Changes the geometry of cell ro previous using mxGraphModel.geometryForCellChanged.
mxGraphLayout.prototype.execute = function(parent)
Executes the layout algorithm for the children of the given parent.
mxGraphModel.prototype.execute = function(change)
Executes the given edit and fires events if required.
mxHierarchicalLayout.prototype.execute = function(parent,
roots)
Executes the layout for the children of the specified parent.
mxHierarchicalLayoutStage.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxMedianHybridCrossingReduction.prototype.execute = function(parent)
Performs a vertex ordering within ranks as described by Gansner et al 1993
mxMinimumCycleRemover.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxParallelEdgeLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxPartitionLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxRadialTreeLayout.prototype.execute = function(parent,
root)
Implements mxGraphLayout.execute.
mxRootChange.prototype.execute = function()
Carries out a change of the root using mxGraphModel.rootChanged.
mxSelectionChange.prototype.execute = function()
Changes the current root of the view.
mxStackLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxStyleChange.prototype.execute = function()
Changes the style of cell to previous using mxGraphModel.styleForCellChanged.
mxSwimlaneLayout.prototype.execute = function(parent,
swimlanes)
Executes the layout for the children of the specified parent.
mxSwimlaneOrdering.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxTerminalChange.prototype.execute = function()
Changes the terminal of cell to previous using mxGraphModel.terminalForCellChanged.
mxValueChange.prototype.execute = function()
Changes the value of cell to previous using mxGraphModel.valueForCellChanged.
mxHandle.prototype.execute = function()
Hook for subclassers to execute the handle.
mxVisibleChange.prototype.execute = function()
Changes the visible state of cell to previous using mxGraphModel.visibleStateForCellChanged.
Specifies the event name for execute.
Fires between begin- and endUpdate and after an atomic change was executed in the model.
Specifies the event name for executed.
Fires between START_EDIT and END_EDIT after an atomic change was executed.
Fires between START_EDIT and END_EDIT after an atomic change was executed.
mxLayoutManager.prototype.executeLayout = function(layout,
parent)
Executes the given layout on the given parent.
mxGraph.prototype.exitGroup = function()
Changes the current root to the next valid root in the displayed cell hierarchy.
mxGraph.prototype.expandedImage
Specifies the mxImage to indicate a expanded state.
mxGraph.prototype.exportEnabled
Specifies the return value for canExportCell.
extend: function(ctor,
superCtor)
Assigns a copy of the superclass prototype to the subclass prototype.
mxGraphHierarchyModel.prototype.extendedDfs = function(parent,
root,
connectingEdge,
visitor,
seen,
ancestors,
childHash,
layer)
Performs a depth first search on the internal hierarchy model.
mxSwimlaneModel.prototype.extendedDfs = function(parent,
root,
connectingEdge,
visitor,
seen,
ancestors,
childHash,
layer)
Performs a depth first search on the internal hierarchy model.
mxGraph.prototype.extendParent = function(cell)
Resizes the parents recursively so that they contain the complete area of the resized child cell.
mxGraph.prototype.extendParents
Specifies if a parent should contain the child bounds after a resize of the child.
mxSpaceManager.prototype.extendParents
Specifies if event handling is enabled.
mxGraph.prototype.extendParentsOnAdd
Specifies if parents should be extended according to the extendParents switch if cells are added.
Specifies the extension used for language files.
+
mxMorphing.prototype.ease
Ease-off for movement towards the given vector.
mxCell.prototype.edge
Specifies whether the cell is an edge.
Defines the color to be used for the selection border of edges.
Defines the strokewidth to be used for edge selections.
mxGraph.prototype.edgeLabelsMovable
Specifies the return value for edges in isLabelMovable.
mxGraphHierarchyModel.prototype.edgeMapper
Map from graph edges to internal model edges
mxSwimlaneModel.prototype.edgeMapper
Map from graph edges to internal model edges
mxCompactTreeLayout.prototype.edgeRouting
Whether or not to apply the internal tree edge routing.
mxCell.prototype.edges
Holds the edges.
mxGraphHierarchyEdge.prototype.edges
The graph edge(s) this object represents.
A cache of edges whose source terminal is the key
A cache of edges whose source terminal is the key
mxConnectionHandler.prototype.edgeState
Optional mxCellState that represents the preview edge while the handler is active.
mxHierarchicalLayout.prototype.edgeStyle
The style to apply between cell layers to edge segments
Name of the elbow edge style.
Name of the entity relation edge style.
Name of the loop edge style.
Name of the generic orthogonal edge style.
Name of the generic segment edge style.
Name of the side to side edge style.
Name of the top to bottom edge style.
Specifies the event name for editingStarted.
Fires after the in-place editor starts in startEditingAtCell.
Specifies the event name for editingStopped.
Fires after the in-place editor stops in stopEditing.
mxCellEditor.prototype.editingCell
Reference to the mxCell that is currently being edited.
mxDefaultKeyHandler.prototype.editor
Reference to the enclosing mxEditor.
mxDefaultToolbar.prototype.editor
Reference to the enclosing mxEditor.
Constant for elbow horizontal.
Constant for elbow vertical.
ElbowConnector: function (state,
source,
target,
points,
result)
Uses either SideToSide or TopToBottom depending on the horizontal flag in the cell style.
mxDragSource.prototype.element
Reference to the DOM node which was made draggable.
mxSvgCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Private helper function to create SVG elements
mxVmlCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Sets the current path to an ellipse.
mxXmlCanvas2D.prototype.ellipse = function(x,
y,
w,
h)
Puts an ellipse into the drawing buffer.
EllipsePerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes an elliptic perimeter.
mxGraph.prototype.EMPTY_ARRAY
Immutable empty array instance.
mxCellEditor.prototype.emptyLabelText
Text to be displayed for empty labels.
mxAutoSaveManager.prototype.enabled
Specifies if event handling is enabled.
mxCellMarker.prototype.enabled
Specifies if the marker is enabled.
mxConnectionHandler.prototype.enabled
Specifies if events are handled.
mxConstraintHandler.prototype.enabled
Specifies if events are handled.
mxDragSource.prototype.enabled
Specifies if this drag source is enabled.
mxGraph.prototype.enabled
Specifies the return value for isEnabled.
mxGraphHandler.prototype.enabled
Specifies if events are handled.
mxKeyHandler.prototype.enabled
Specifies if events are handled.
mxLayoutManager.prototype.enabled
Specifies if event handling is enabled.
mxOutline.prototype.enabled
Specifies if events are handled.
mxPopupMenu.prototype.enabled
Specifies if events are handled.
mxRubberband.prototype.enabled
Specifies if events are handled.
mxSelectionCellsHandler.prototype.enabled
Specifies if events are handled.
mxSpaceManager.prototype.enabled
Specifies if event handling is enabled.
mxSwimlaneManager.prototype.enabled
Specifies if event handling is enabled.
mxToolbar.prototype.enabled
Specifies if events are handled.
mxTooltipHandler.prototype.enabled
Specifies if events are handled.
mxUrlConverter.prototype.enabled
Specifies if the converter is enabled.
mxCodec.prototype.encode = function(obj)
Encodes the specified object and returns the resulting XML node.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
obj)
Returns null.
codec.encode = function(enc,
view)
Encodes the given mxGraphView using encodeCell starting at the model’s root.
mxObjectCodec.prototype.encode = function(enc,
obj)
Encodes the specified object and returns a node representing then given object.
codec.encode = function(enc,
obj)
Encodes a stylesheet.
mxCodec.prototype.encodeCell = function(cell,
node,
includeChildren)
Encoding of cell hierarchies is built-into the core, but is a higher-level function that needs to be explicitely used by the respective object encoders (eg.
codec.encodeCell = function(enc,
view,
cell)
Recursively encodes the specifed cell.
mxCodec.prototype.encodeDefaults
Specifies if default values should be encoded.
codec.encodeObject = function(enc,
obj,
node)
Encodes the given mxGraphModel by writing a (flat) XML sequence of cell nodes as produced by the mxCellCodec.
mxObjectCodec.prototype.encodeObject = function(enc,
obj,
node)
Encodes the value of each member in then given obj into the given node using encodeValue.
mxObjectCodec.prototype.encodeValue = function(enc,
obj,
name,
value,
node)
Converts the given value according to the mappings and id-refs in this codec and uses writeAttribute to write the attribute into the given node.
mxAbstractCanvas2D.prototype.end = function()
Empty implementation for backwards compatibility.
Specifies the event name for endEdit.
Fires after the updateLevel was changed from 1 to 0.
Fires after a set of changeswas executed in undo or redo.
Specifies the event name for endUpdate.
Fires after the updateLevel was decreased in endUpdate but before any notification or change dispatching.
mxGraphModel.prototype.endingUpdate
True if the program flow is currently inside endUpdate.
mxGraphModel.prototype.endUpdate = function()
Decrements the updateLevel by one and fires an undo event if the updateLevel reaches 0.
enter: function(string)
Writes the specified string to the console if TRACE is true and returns the current time in milliseconds.
mxGraph.prototype.enterGroup = function(cell)
Uses the given cell as the root of the displayed cell hierarchy.
mxGraph.prototype.enterStopsCellEditing
If true, pressing the enter key without pressing control or shift will stop editing and accept the new value.
Defines the length of the horizontal segment of an Entity Relation.
EntityRelation: function (state,
source,
target,
points,
result)
Implements an entity relation style for edges (as used in database schema diagrams).
equalEntries: function(a,
b)
Returns true if all entries of the given objects are equal.
equalPoints: function(a,
b)
Compares all mxPoints in the given lists.
mxGeometry.prototype.equals = function(obj)
Returns true if the given object equals this geometry.
mxPoint.prototype.equals = function(obj)
Returns true if the given object equals this point.
mxRectangle.prototype.equals = function(obj)
Returns true if the given object equals this rectangle.
mxConnectionHandler.prototype.error
Holds the current validation error while connections are being created.
mxEdgeHandler.prototype.error
Holds the current validation error while a connection is being changed.
error: function(message,
width,
close,
icon)
Displays the given error message in a new mxWindow of the given width.
Defines the image used for error dialogs.
Specifies the resource key for the title of the error window.
mxGraph.prototype.escape = function(evt)
Processes an escape keystroke.
mxKeyHandler.prototype.escape = function(evt)
Hook to process ESCAPE keystrokes.
Fires when the escape key is pressed.
Specifies the event name for escape.
mxGraph.prototype.escapeEnabled
Specifies if mxKeyHandler should invoke escape when the escape key is pressed.
mxEditor.prototype.escapePostData
Specifies if the data in the post request for saving a diagram should be converted using encodeURIComponent.
eval: function(expr)
Evaluates the given expression using eval and returns the JavaScript object that represents the expression result.
mxStencil.prototype.evaluateAttribute = function(node,
attribute,
shape)
Gets the attribute for the given name from the given node.
mxStencil.prototype.evaluateTextAttribute = function(node,
attribute,
state)
Gets the given attribute as a text.
mxEventSource.prototype.eventListeners
Holds the event names and associated listeners in an array.
mxEventSource.prototype.eventsEnabled
Specifies if events can be fired.
mxEventSource.prototype.eventSource
Optional source for events.
mxMouseEvent.prototype.evt
Holds the inner event object.
mxObjectCodec.prototype.exclude
Array containing the variable names that should be ignored by the codec.
mxCellAttributeChange.prototype.execute = function()
Changes the attribute of the cell’s user object by using mxCell.setAttribute.
mxChildChange.prototype.execute = function()
Changes the parent of child using mxGraphModel.parentForCellChanged and removes or restores the cell’s connections.
mxCircleLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxCollapseChange.prototype.execute = function()
Changes the collapsed state of cell to previous using mxGraphModel.collapsedStateForCellChanged.
mxCompactTreeLayout.prototype.execute = function(parent,
root)
Implements mxGraphLayout.execute.
mxCompositeLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute by executing all layouts in a single transaction.
mxCoordinateAssignment.prototype.execute = function(parent)
A basic horizontal coordinate assignment algorithm
mxCurrentRootChange.prototype.execute = function()
Changes the current root of the view.
mxEdgeLabelLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxEditor.prototype.execute = function (actionname,
cell,
evt)
Executes the function with the given name in actions passing the editor instance and given cell as the first and second argument.
mxFastOrganicLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxGeometryChange.prototype.execute = function()
Changes the geometry of cell ro previous using mxGraphModel.geometryForCellChanged.
mxGraphLayout.prototype.execute = function(parent)
Executes the layout algorithm for the children of the given parent.
mxGraphModel.prototype.execute = function(change)
Executes the given edit and fires events if required.
mxHierarchicalLayout.prototype.execute = function(parent,
roots)
Executes the layout for the children of the specified parent.
mxHierarchicalLayoutStage.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxMedianHybridCrossingReduction.prototype.execute = function(parent)
Performs a vertex ordering within ranks as described by Gansner et al 1993
mxMinimumCycleRemover.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxParallelEdgeLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxPartitionLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxRadialTreeLayout.prototype.execute = function(parent,
root)
Implements mxGraphLayout.execute.
mxRootChange.prototype.execute = function()
Carries out a change of the root using mxGraphModel.rootChanged.
mxSelectionChange.prototype.execute = function()
Changes the current root of the view.
mxStackLayout.prototype.execute = function(parent)
Implements mxGraphLayout.execute.
mxStyleChange.prototype.execute = function()
Changes the style of cell to previous using mxGraphModel.styleForCellChanged.
mxSwimlaneLayout.prototype.execute = function(parent,
swimlanes)
Executes the layout for the children of the specified parent.
mxSwimlaneOrdering.prototype.execute = function(parent)
Takes the graph detail and configuration information within the facade and creates the resulting laid out graph within that facade for further use.
mxTerminalChange.prototype.execute = function()
Changes the terminal of cell to previous using mxGraphModel.terminalForCellChanged.
mxValueChange.prototype.execute = function()
Changes the value of cell to previous using mxGraphModel.valueForCellChanged.
mxHandle.prototype.execute = function()
Hook for subclassers to execute the handle.
mxVisibleChange.prototype.execute = function()
Changes the visible state of cell to previous using mxGraphModel.visibleStateForCellChanged.
Specifies the event name for execute.
Fires between begin- and endUpdate and after an atomic change was executed in the model.
Specifies the event name for executed.
Fires between START_EDIT and END_EDIT after an atomic change was executed.
Fires between START_EDIT and END_EDIT after an atomic change was executed.
mxLayoutManager.prototype.executeLayout = function(layout,
parent)
Executes the given layout on the given parent.
mxGraph.prototype.exitGroup = function()
Changes the current root to the next valid root in the displayed cell hierarchy.
mxGraph.prototype.expandedImage
Specifies the mxImage to indicate a expanded state.
mxGraph.prototype.exportEnabled
Specifies the return value for canExportCell.
extend: function(ctor,
superCtor)
Assigns a copy of the superclass prototype to the subclass prototype.
mxGraphHierarchyModel.prototype.extendedDfs = function(parent,
root,
connectingEdge,
visitor,
seen,
ancestors,
childHash,
layer)
Performs a depth first search on the internal hierarchy model.
mxSwimlaneModel.prototype.extendedDfs = function(parent,
root,
connectingEdge,
visitor,
seen,
ancestors,
childHash,
layer)
Performs a depth first search on the internal hierarchy model.
mxGraph.prototype.extendParent = function(cell)
Resizes the parents recursively so that they contain the complete area of the resized child cell.
mxGraph.prototype.extendParents
Specifies if a parent should contain the child bounds after a resize of the child.
mxSpaceManager.prototype.extendParents
Specifies if event handling is enabled.
mxGraph.prototype.extendParentsOnAdd
Specifies if parents should be extended according to the extendParents switch if cells are added.
Specifies the extension used for language files.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General6.html b/docs/js-api/index/General6.html index b468ad450..977249bfd 100644 --- a/docs/js-api/index/General6.html +++ b/docs/js-api/index/General6.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
F
 factoryMethod
 fadeOut
 fgNodes, mxStencil
 FIELD_NAME, mxObjectIdentity
 filename, mxEditor
 fill
 fillAndStroke
 filterCells, mxGraphModel
 filterDescendants
 findNearestSegment, mxUtils
 findNode, mxUtils
 findNodeByAttribute, mxUtils
 findParallels, mxParallelEdgeLayout
 findRankHeights, mxCompactTreeLayout
 findRoots
 findTreeRoots, mxGraph
 fineTuning
 FIRE_MOUSE_EVENT
 FIRED, mxEvent
 fireEvent, mxEventSource
 fireGestureEvent, mxGraph
 fireMouseEvent, mxGraph
 first, mxConnectionHandler
 fit
 fixRanks
 FLIP_EDGE
 flipEdge, mxGraph
 flipPoint, mxVertexHandler
 foAltText, mxSvgCanvas2D
 focusLost, mxCellEditor
 foEnabled, mxSvgCanvas2D
 FOLD_CELLS
 foldCells, mxGraph
 foldHandler, mxSpaceManager
 Folding, mxGraph
 foldingEnabled, mxGraph
 FONT_BOLD, mxConstants
 FONT_ITALIC, mxConstants
 FONT_SHADOW, mxConstants
 FONT_UNDERLINE, mxConstants
 fontMetricsPadding, mxSvgCanvas2D
 forceConstant, mxFastOrganicLayout
 forceConstantSquared, mxFastOrganicLayout
 forcedInserting, mxEditor
 forceVmlHandles, mxOutline
 format
 fromRectangle, mxRectangle
 Functions
GlobalMedianCellSortermxAbstractCanvas2DmxActormxAnimationmxArrowmxAutoSaveManagermxCellmxCellAttributeChangemxCellCodecmxCellEditormxCellHighlightmxCellMarkermxCellOverlaymxCellPathmxCellRenderermxCellStatemxCellStatePreviewmxCellTrackermxChildChangemxChildChangeCodecmxCircleLayoutmxClientmxClipboardmxCloudmxCodecmxCodecRegistrymxCollapseChangemxCompactTreeLayoutmxCompositeLayoutmxConnectionConstraintmxConnectormxConstraintHandlermxCoordinateAssignmentmxCurrentRootChangemxCylindermxDefaultKeyHandlermxDefaultKeyHandlerCodecmxDefaultPopupMenumxDefaultPopupMenuCodecmxDefaultToolbarmxDefaultToolbarCodecmxDictionarymxDivResizermxDoubleEllipsemxDragSourcemxEdgeHandlermxEdgeLabelLayoutmxEdgeStylemxEditorCodecmxEffectsmxElbowEdgeHandlermxEllipsemxEventmxEventObjectmxEventSourcemxFastOrganicLayoutmxFormmxGenericChangeCodecmxGeometrymxGeometryChangemxGraphAbstractHierarchyCellmxGraphHandlermxGraphHierarchyEdgemxGraphHierarchyModelmxGraphHierarchyNodemxGraphLayoutmxGraphModelmxGraphSelectionModelmxGraphViewmxGraphViewCodecmxGuidemxHexagonmxHierarchicalLayoutmxHierarchicalLayoutStagemxImagemxImageBundlemxImageExportmxImageShapemxKeyHandlermxLabelmxLayoutManagermxLinemxLogmxMarkermxMedianHybridCrossingReductionmxMinimumCycleRemovermxModelCodecmxMorphingmxMouseEventmxMultiplicitymxObjectCodecmxObjectIdentitymxOutlinemxPanningHandlermxParallelEdgeLayoutmxPartitionLayoutmxPerimetermxPointmxPolylinemxPopupMenumxPopupMenuHandlermxPrintPreviewmxRadialTreeLayoutmxRectanglemxRectangleShapemxResourcesmxRhombusmxRootChangemxRootChangeCodecmxRubberbandmxSelectionChangemxShapemxSpaceManagermxStackLayoutmxStencilmxStencilRegistrymxStyleChangemxStyleRegistrymxStylesheetmxStylesheetCodecmxSvgCanvas2DmxSwimlanemxSwimlaneLayoutmxSwimlaneManagermxSwimlaneModelmxSwimlaneOrderingmxTemporaryCellStatesmxTerminalChangemxTerminalChangeCodecmxTextmxToolbarmxTooltipHandlermxTrianglemxUndoableEditmxUndoManagermxUrlConvertermxUtilsmxValueChangemxVertexHandlermxVisibleChangemxVmlCanvas2DmxWindowmxXmlCanvas2DmxXmlRequestWeightedCellSorter
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
F
 factoryMethod
 fadeOut
 fgNodes, mxStencil
 FIELD_NAME, mxObjectIdentity
 filename, mxEditor
 fill
 fillAndStroke
 filterCells, mxGraphModel
 filterDescendants
 findNearestSegment, mxUtils
 findNode, mxUtils
 findNodeByAttribute, mxUtils
 findParallels, mxParallelEdgeLayout
 findRankHeights, mxCompactTreeLayout
 findRoots
 findTreeRoots, mxGraph
 fineTuning
 FIRE_MOUSE_EVENT
 FIRED, mxEvent
 fireEvent, mxEventSource
 fireGestureEvent, mxGraph
 fireMouseEvent, mxGraph
 first, mxConnectionHandler
 fit
 fixRanks
 FLIP_EDGE
 flipEdge, mxGraph
 flipPoint, mxVertexHandler
 foAltText, mxSvgCanvas2D
 focusLost, mxCellEditor
 foEnabled, mxSvgCanvas2D
 FOLD_CELLS
 foldCells, mxGraph
 foldHandler, mxSpaceManager
 Folding, mxGraph
 foldingEnabled, mxGraph
 FONT_BOLD, mxConstants
 FONT_ITALIC, mxConstants
 FONT_SHADOW, mxConstants
 FONT_UNDERLINE, mxConstants
 fontMetricsPadding, mxSvgCanvas2D
 forceConstant, mxFastOrganicLayout
 forceConstantSquared, mxFastOrganicLayout
 forcedInserting, mxEditor
 forceVmlHandles, mxOutline
 format
 fromRectangle, mxRectangle
 Functions
GlobalMedianCellSortermxAbstractCanvas2DmxActormxAnimationmxArrowmxAutoSaveManagermxCellmxCellAttributeChangemxCellCodecmxCellEditormxCellHighlightmxCellMarkermxCellOverlaymxCellPathmxCellRenderermxCellStatemxCellStatePreviewmxCellTrackermxChildChangemxChildChangeCodecmxCircleLayoutmxClientmxClipboardmxCloudmxCodecmxCodecRegistrymxCollapseChangemxCompactTreeLayoutmxCompositeLayoutmxConnectionConstraintmxConnectormxConstraintHandlermxCoordinateAssignmentmxCurrentRootChangemxCylindermxDefaultKeyHandlermxDefaultKeyHandlerCodecmxDefaultPopupMenumxDefaultPopupMenuCodecmxDefaultToolbarmxDefaultToolbarCodecmxDictionarymxDivResizermxDoubleEllipsemxDragSourcemxEdgeHandlermxEdgeLabelLayoutmxEdgeStylemxEditorCodecmxEffectsmxElbowEdgeHandlermxEllipsemxEventmxEventObjectmxEventSourcemxFastOrganicLayoutmxFormmxGenericChangeCodecmxGeometrymxGeometryChangemxGraphAbstractHierarchyCellmxGraphHandlermxGraphHierarchyEdgemxGraphHierarchyModelmxGraphHierarchyNodemxGraphLayoutmxGraphModelmxGraphSelectionModelmxGraphViewmxGraphViewCodecmxGuidemxHexagonmxHierarchicalLayoutmxHierarchicalLayoutStagemxImagemxImageBundlemxImageExportmxImageShapemxKeyHandlermxLabelmxLayoutManagermxLinemxLogmxMarkermxMedianHybridCrossingReductionmxMinimumCycleRemovermxModelCodecmxMorphingmxMouseEventmxMultiplicitymxObjectCodecmxObjectIdentitymxOutlinemxPanningHandlermxParallelEdgeLayoutmxPartitionLayoutmxPerimetermxPointmxPolylinemxPopupMenumxPopupMenuHandlermxPrintPreviewmxRadialTreeLayoutmxRectanglemxRectangleShapemxResourcesmxRhombusmxRootChangemxRootChangeCodecmxRubberbandmxSelectionChangemxShapemxSpaceManagermxStackLayoutmxStencilmxStencilRegistrymxStyleChangemxStyleRegistrymxStylesheetmxStylesheetCodecmxSvgCanvas2DmxSwimlanemxSwimlaneLayoutmxSwimlaneManagermxSwimlaneModelmxSwimlaneOrderingmxTemporaryCellStatesmxTerminalChangemxTerminalChangeCodecmxTextmxToolbarmxTooltipHandlermxTrianglemxUndoableEditmxUndoManagermxUrlConvertermxUtilsmxValueChangemxVertexHandlermxVisibleChangemxVmlCanvas2DmxWindowmxXmlCanvas2DmxXmlRequestWeightedCellSorter
-
mxConnectionHandler.prototype.factoryMethod
Function that is used for creating new edges.
mxPopupMenu.prototype.factoryMethod
Function that is used to create the popup menu.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
Asynchronous fade-out operation.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
See mxEffects.fadeOut.
Holds the XML node with the stencil description.
Name of the field to be used to store the object ID.
mxEditor.prototype.filename
Contains the URL of the last opened file as a string.
mxStackLayout.prototype.fill
Boolean indicating if dimension should be changed to fill out the parent cell.
mxSvgCanvas2D.prototype.fill = function()
Fills the current path.
mxVmlCanvas2D.prototype.fill = function()
Fills the current path.
mxXmlCanvas2D.prototype.fill = function()
Fills the current drawing buffer.
mxSvgCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
mxVmlCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
mxXmlCanvas2D.prototype.fillAndStroke = function()
Fills the current drawing buffer and its outline.
mxGraphModel.prototype.filterCells = function(cells,
filter)
Returns the cells from the given array where the fiven filter function returns true.
mxGraphModel.prototype.filterDescendants = function(filter,
parent)
Visits all cells recursively and applies the specified filter function to each cell.
mxHierarchicalLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
mxSwimlaneLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
findNearestSegment: function(state,
x,
y)
Finds the index of the nearest segment on the given cell state for the specified coordinate pair.
findNode: function(node,
attr,
value)
Returns the first node where attr equals value.
findNodeByAttribute: function()
Returns the first node where the given attribute matches the given value.
mxParallelEdgeLayout.prototype.findParallels = function(parent)
Finds the parallel edges in the given parent.
mxCompactTreeLayout.prototype.findRankHeights = function(node,
rank)
Stores the maximum height (relative to the layout direction) of cells in each rank
mxHierarchicalLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxSwimlaneLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxGraph.prototype.findTreeRoots = function(parent,
isolate,
invert)
Returns all children in the given parent which do not have incoming edges.
mxCoordinateAssignment.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
mxHierarchicalLayout.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
mxSwimlaneLayout.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
Specifies the event name for fireMouseEvent.
Fires in fireMouseEvent before the mouse listeners are invoked.
Specifies the event name for fired.
mxEventSource.prototype.fireEvent = function(evt,
sender)
Dispatches the given event to the listeners which are registered for the event.
mxGraph.prototype.fireGestureEvent = function(evt,
cell)
Dispatches a mxEvent.GESTURE event.
mxGraph.prototype.fireMouseEvent = function(evtName,
me,
sender)
Dispatches the given event in the graph event dispatch loop.
mxConnectionHandler.prototype.first
Holds the mxPoint where the mouseDown took place while the handler is active.
mxGraph.prototype.fit = function(border,
keepOrigin)
Scales the graph such that the complete diagram fits into container and returns the current scale in the view.
fit: function(node)
Makes sure the given node is inside the visible area of the window.
mxWindow.prototype.fit = function()
Makes sure the window is inside the client area of the window.
mxGraphHierarchyModel.prototype.fixRanks = function()
Fixes the layer assignments to the values stored in the nodes.
mxSwimlaneModel.prototype.fixRanks = function()
Fixes the layer assignments to the values stored in the nodes.
Specifies the event name for flipEdge.
Fires between begin- and endUpdate in flipEdge.
mxGraph.prototype.flipEdge = function(edge)
Toggles the style of the given edge between null (or empty) and alternateEdgeStyle.
mxHandle.prototype.flipPoint = function(pt)
Flips the given point vertically and/or horizontally.
mxSvgCanvas2D.prototype.foAltText
Specifies the fallback text for unsupported foreignObjects in exported documents.
mxCellEditor.prototype.focusLost = function()
Called if the textarea has lost focus.
mxSvgCanvas2D.prototype.foEnabled
Specifies if use of foreignObject for HTML markup is allowed.
Specifies the event name for foldCells.
Fires between begin- and endUpdate in foldCells.
mxGraph.prototype.foldCells = function(collapse,
recurse,
cells,
checkFoldable)
Sets the collapsed state of the specified cells and all descendants if recurse is true.
mxSpaceManager.prototype.foldHandler
Holds the function that handles the fold event.
mxGraph.prototype.foldingEnabled
Specifies if folding (collapse and expand via an image icon in the graph should be enabled).
Constant for bold fonts.
Constant for italic fonts.
Constant for fonts with a shadow.
Constant for underlined fonts.
mxSvgCanvas2D.prototype.fontMetricsPadding
Padding to be added for text that is not wrapped to account for differences in font metrics on different platforms in pixels.
mxFastOrganicLayout.prototype.forceConstant
The force constant by which the attractive forces are divided and the replusive forces are multiple by the square of.
mxFastOrganicLayout.prototype.forceConstantSquared
Cache of <forceConstant>^2 for performance.
mxEditor.prototype.forcedInserting
Specifies if a new cell should be inserted on a single click even using insertFunction if there is a cell under the mousepointer, otherwise the cell under the mousepointer is selected.
mxOutline.prototype.forceVmlHandles
Specifies if VML should be used to render the handles in this control.
mxAbstractCanvas2D.prototype.format = function(value)
Rounds all numbers to integers.
mxSvgCanvas2D.prototype.format = function(value)
Rounds all numbers to 2 decimal points.
mxXmlCanvas2D.prototype.format = function(value)
Returns a formatted number with 2 decimal places.
mxRectangle.fromRectangle = function(rect)
Returns a new mxRectangle which is a copy of the given rectangle.
+
mxConnectionHandler.prototype.factoryMethod
Function that is used for creating new edges.
mxPopupMenu.prototype.factoryMethod
Function that is used to create the popup menu.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
Asynchronous fade-out operation.
fadeOut: function(node,
from,
remove,
step,
delay,
isEnabled)
See mxEffects.fadeOut.
Holds the XML node with the stencil description.
Name of the field to be used to store the object ID.
mxEditor.prototype.filename
Contains the URL of the last opened file as a string.
mxStackLayout.prototype.fill
Boolean indicating if dimension should be changed to fill out the parent cell.
mxSvgCanvas2D.prototype.fill = function()
Fills the current path.
mxVmlCanvas2D.prototype.fill = function()
Fills the current path.
mxXmlCanvas2D.prototype.fill = function()
Fills the current drawing buffer.
mxSvgCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
mxVmlCanvas2D.prototype.fillAndStroke = function()
Fills and paints the outline of the current path.
mxXmlCanvas2D.prototype.fillAndStroke = function()
Fills the current drawing buffer and its outline.
mxGraphModel.prototype.filterCells = function(cells,
filter)
Returns the cells from the given array where the fiven filter function returns true.
mxGraphModel.prototype.filterDescendants = function(filter,
parent)
Visits all cells recursively and applies the specified filter function to each cell.
mxHierarchicalLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
mxSwimlaneLayout.prototype.filterDescendants = function(cell,
result)
Creates an array of descendant cells
findNearestSegment: function(state,
x,
y)
Finds the index of the nearest segment on the given cell state for the specified coordinate pair.
findNode: function(node,
attr,
value)
Returns the first node where attr equals value.
findNodeByAttribute: function()
Returns the first node where the given attribute matches the given value.
mxParallelEdgeLayout.prototype.findParallels = function(parent)
Finds the parallel edges in the given parent.
mxCompactTreeLayout.prototype.findRankHeights = function(node,
rank)
Stores the maximum height (relative to the layout direction) of cells in each rank
mxHierarchicalLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxSwimlaneLayout.prototype.findRoots = function(parent,
vertices)
Returns all visible children in the given parent which do not have incoming edges.
mxGraph.prototype.findTreeRoots = function(parent,
isolate,
invert)
Returns all children in the given parent which do not have incoming edges.
mxCoordinateAssignment.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
mxHierarchicalLayout.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
mxSwimlaneLayout.prototype.fineTuning
Whether or not to perform local optimisations and iterate multiple times through the algorithm.
Specifies the event name for fireMouseEvent.
Fires in fireMouseEvent before the mouse listeners are invoked.
Specifies the event name for fired.
mxEventSource.prototype.fireEvent = function(evt,
sender)
Dispatches the given event to the listeners which are registered for the event.
mxGraph.prototype.fireGestureEvent = function(evt,
cell)
Dispatches a mxEvent.GESTURE event.
mxGraph.prototype.fireMouseEvent = function(evtName,
me,
sender)
Dispatches the given event in the graph event dispatch loop.
mxConnectionHandler.prototype.first
Holds the mxPoint where the mouseDown took place while the handler is active.
mxGraph.prototype.fit = function(border,
keepOrigin)
Scales the graph such that the complete diagram fits into container and returns the current scale in the view.
fit: function(node)
Makes sure the given node is inside the visible area of the window.
mxWindow.prototype.fit = function()
Makes sure the window is inside the client area of the window.
mxGraphHierarchyModel.prototype.fixRanks = function()
Fixes the layer assignments to the values stored in the nodes.
mxSwimlaneModel.prototype.fixRanks = function()
Fixes the layer assignments to the values stored in the nodes.
Specifies the event name for flipEdge.
Fires between begin- and endUpdate in flipEdge.
mxGraph.prototype.flipEdge = function(edge)
Toggles the style of the given edge between null (or empty) and alternateEdgeStyle.
mxHandle.prototype.flipPoint = function(pt)
Flips the given point vertically and/or horizontally.
mxSvgCanvas2D.prototype.foAltText
Specifies the fallback text for unsupported foreignObjects in exported documents.
mxCellEditor.prototype.focusLost = function()
Called if the textarea has lost focus.
mxSvgCanvas2D.prototype.foEnabled
Specifies if use of foreignObject for HTML markup is allowed.
Specifies the event name for foldCells.
Fires between begin- and endUpdate in foldCells.
mxGraph.prototype.foldCells = function(collapse,
recurse,
cells,
checkFoldable)
Sets the collapsed state of the specified cells and all descendants if recurse is true.
mxSpaceManager.prototype.foldHandler
Holds the function that handles the fold event.
mxGraph.prototype.foldingEnabled
Specifies if folding (collapse and expand via an image icon in the graph should be enabled).
Constant for bold fonts.
Constant for italic fonts.
Constant for fonts with a shadow.
Constant for underlined fonts.
mxSvgCanvas2D.prototype.fontMetricsPadding
Padding to be added for text that is not wrapped to account for differences in font metrics on different platforms in pixels.
mxFastOrganicLayout.prototype.forceConstant
The force constant by which the attractive forces are divided and the replusive forces are multiple by the square of.
mxFastOrganicLayout.prototype.forceConstantSquared
Cache of <forceConstant>^2 for performance.
mxEditor.prototype.forcedInserting
Specifies if a new cell should be inserted on a single click even using insertFunction if there is a cell under the mousepointer, otherwise the cell under the mousepointer is selected.
mxOutline.prototype.forceVmlHandles
Specifies if VML should be used to render the handles in this control.
mxAbstractCanvas2D.prototype.format = function(value)
Rounds all numbers to integers.
mxSvgCanvas2D.prototype.format = function(value)
Rounds all numbers to 2 decimal points.
mxXmlCanvas2D.prototype.format = function(value)
Returns a formatted number with 2 decimal places.
mxRectangle.fromRectangle = function(rect)
Returns a new mxRectangle which is a copy of the given rectangle.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General7.html b/docs/js-api/index/General7.html index 8a2791dfb..9383ff053 100644 --- a/docs/js-api/index/General7.html +++ b/docs/js-api/index/General7.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 geometry, mxCell
 geometryForCellChanged, mxGraphModel
 GESTURE
 get
 GET, mxEvent
 getAlignmentAsPoint, mxUtils
 getAlignmentTolerance, mxConnectionHandler
 getAllConnectionConstraints, mxGraph
 getAllEdges, mxGraph
 getAlternateContent, mxSvgCanvas2D
 getAppendices, mxPrintPreview
 getArcSize
 getAttribute, mxCell
 getAttributeName, mxObjectCodec
 getBackgroundImage, mxGraph
 getBackgroundPageBounds, mxGraphView
 getBackgroundPane, mxGraphView
 getBaseDomain, mxUrlConverter
 getBaseUrl
 getBorder, mxGraph
 getBorderSizes, mxGraph
 getBoundingBox
 getBoundingBoxFromGeometry, mxGraph
 getBounds
 getBoundsForGroup, mxGraph
 getCanvas, mxGraphView
 getCell
 getCellAt
 getCellBounds
 getCellContainmentArea, mxGraph
 getCellForPopupEvent, mxPopupMenuHandler
 getCellGeometry, mxGraph
 getCellOverlays, mxGraph
 getCells
 getCellsBeyond, mxGraph
 getCellsForChange, mxLayoutManager
 getCellsForEdit, mxLayoutManager
 getCellsForGroup, mxGraph
 getCellStates, mxGraphView
 getCellsToShift, mxSpaceManager
 getCellStyle
 getCellValidationError, mxGraph
 getCenterX, mxRectangle
 getCenterY, mxRectangle
 getChildAt
 getChildCells
 getChildCount
 getChildEdges
 getChildNodes, mxUtils
 getChildOffsetForCell, mxGraph
 getChildren, mxGraphModel
 getChildVertices
 getClientX, mxEvent
 getClientY, mxEvent
 getCloneableCells, mxGraph
 getCodec, mxCodecRegistry
 getColor, mxUtils
 getConnectImage, mxConnectionHandler
 getConnectionConstraint, mxGraph
 getConnectionPoint, mxGraph
 getConnections
 getConstraint, mxGraphLayout
 getControlBounds, mxCellRenderer
 getCoreCell
 getCoverPages, mxPrintPreview
 getCurrentHtmlValue, mxCellEditor
 getCurrentPoints
 getCurrentRoot, mxGraph
 getCurrentStrokeWidth, mxSvgCanvas2D
 getCurrentStyle, mxUtils
 getCurrentValue, mxCellEditor
 getCursor, mxShape
 getCursorForBend, mxElbowEdgeHandler
 getCursorForCell, mxGraph
 getCursorForMouseEvent, mxGraph
 getDecoratorPane, mxGraphView
 getDefaultBundle, mxResources
 getDefaultEdgeStyle, mxStylesheet
 getDefaultParent, mxGraph
 getDefaultVertexStyle, mxStylesheet
 getDeletableCells, mxGraph
 getDelta
 getDescendants, mxGraphModel
 getDirectedEdgeCount, mxGraphModel
 getDocType, mxPrintPreview
 getDocumentElement, mxXmlRequest
 getDocumentHeight, mxDivResizer
 getDocumentScrollOrigin, mxUtils
 getDocumentWidth, mxDivResizer
 getDrawPane, mxGraphView
 getDropTarget
 getEdgeAt
 getEdgeColor, mxConnectionHandler
 getEdgeCount
 getEdgeId, mxParallelEdgeLayout
 getEdgeIndex, mxCell
 getEdges
 getEdgesBetween
 getEdgeStyle
 getEdgeValidationError, mxGraph
 getEdgeWidth, mxConnectionHandler
 getEditingCell, mxCellEditor
 getEditingValue, mxGraph
 getEditorBounds, mxCellEditor
 getElement, mxWindow
 getElementById, mxCodec
 getEmptyBounds, mxGraphView
 getEmptyLabelText, mxCellEditor
 getEvent, mxMouseEvent
 getEventSource, mxEventSource
 getExportableCells, mxGraph
 getFieldName, mxObjectCodec
 getFieldTemplate, mxObjectCodec
 getFirstSelectableCell, mxGraphSelectionModel
 getFoldableCells, mxGraph
 getFoldingImage, mxGraph
 getFunction, mxKeyHandler
 getFunctionName, mxUtils
 getGeneralPurposeVariable
 getGeometry
 getGradientBounds
 getGraph
 getGraphBounds
 getGraphForEvent, mxDragSource
 getGraphX, mxMouseEvent
 getGraphY, mxMouseEvent
 getGridSize, mxGraph
 getGuideStates, mxGraphHandler
 getGuideTolerance, mxGuide
 getHandleFillColor, mxEdgeHandler
 getHandleForEvent
 getHandler, mxSelectionCellsHandler
 getHotspot, mxCellMarker
 getId
 getImage
 getImageBounds
 getImageForConstraint, mxConstraintHandler
 getImageFromBundles, mxGraph
 getImportableCells, mxGraph
 getIncomingEdges
 getIndex, mxCell
 getIndicatorBounds, mxLabel
 getIndicatorColor, mxGraph
 getIndicatorGradientColor, mxGraph
 getIndicatorImage, mxGraph
 getIndicatorShape, mxGraph
 getInitialCellForEvent, mxGraphHandler
 getInitialValue, mxCellEditor
 getInnerHtml, mxUtils
 getKeys, mxDictionary
 getLabel, mxGraph
 getLabelBounds
 getLabelValue, mxCellRenderer
 getLayout, mxLayoutManager
 getLinkForCellState, mxImageExport
 getMainEvent, mxEvent
 getMargin, mxText
 getMarkedState, mxCellMarker
 getMarkerColor, mxCellMarker
 getMaximumGraphBounds, mxGraph
 getMinimumSize
 getModel
 getMovableCells, mxGraph
 getName
 getNearestCommonAncestor, mxGraphModel
 getNextLayerConnectedCells
 getNextPoint, mxGraphView
 getNumber, mxUtils
 getObject, mxCodec
 getOffset, mxUtils
 getOpposites
 getOrigin, mxGraphModel
 getOriginForCell, mxMorphing
 getOuterHtml, mxUtils
 getOutgoingEdges
 getOutlineConstraint, mxGraph
 getOutlineOffset, mxOutline
 getOverlap, mxGraph
 getOverlayPane, mxGraphView
 getPaintBounds, mxCellState
 getParent
 getParentOffset, mxGraphLayout
 getParentPath, mxCellPath
 getParents, mxGraphModel
 getParentSize, mxStackLayout
 getPerimeterBounds
 getPerimeterFunction, mxGraphView
 getPerimeterPoint, mxGraphView
 getPoint
 getPointForEvent
 getPosition, mxVertexHandler
 getPreferredPageSize, mxGraph
 getPreferredSizeForCell, mxGraph
 getPrettyXML, mxUtils
 getPreviewBounds, mxGraphHandler
 getPreviewPoints
 getPreviewTerminalState, mxEdgeHandler
 getPreviousLayerConnectedCells
 getProperties, mxEventObject
 getProperty, mxEventObject
 getRadius, mxCircleLayout
 getRankValue, mxGraphHierarchyNode
 getRelativePoint, mxGraphView
 getRemovedCellsForChanges, mxGraph
 getRoot
 getRootTitle, mxEditor
 getRotatedPoint, mxUtils
 getRotation
 getRoutingCenterX, mxGraphView
 getRoutingCenterY, mxGraphView
 getScale, mxGraphView
 getScaleForPageCount, mxUtils
 getScrollOrigin, mxUtils
 getSelectionBounds, mxVertexHandler
 getSelectionCell, mxGraph
 getSelectionCells, mxGraph
 getSelectionCellsForChanges, mxGraph
 getSelectionColor
 getSelectionCount, mxGraph
 getSelectionModel, mxGraph
 getSelectionPoints, mxEdgeHandler
 getSelectionStrokeWidth
 getShape, mxCellRenderer
 getShapeConstructor, mxCellRenderer
 getShapeRotation
 getShapesForState, mxCellRenderer
 getSizeForString, mxUtils
 getSnapToTerminalTolerance, mxEdgeHandler
 getSource
 getSourceContainerSize, mxOutline
 getSourcePerimeterPoint, mxConnectionHandler
 getSpacing, mxText
 getSpecialBundle, mxResources
 getStartSize, mxGraph
 getState
 getStateForEvent, mxGraph
 getStates, mxGraphView
 getStateToMark, mxCellMarker
 getStatus, mxXmlRequest
 getStencil, mxStencilRegistry
 getStringValue, mxStylesheetCodec
 getStyle
 getStylename, mxUtils
 getStylenames, mxUtils
 getStylesheet, mxGraph
 getSvgGradient, mxSvgCanvas2D
 getSvgScreenOffset
 getSwimlane, mxGraph
 getSwimlaneAt, mxGraph
 getTable, mxForm
 getTargetPerimeterPoint, mxConnectionHandler
 getTemplate, mxEditor
 getTerminal
 getTerminalForPort, mxGraph
 getTerminalPoint, mxGeometry
 getTerminalPort, mxGraphView
 getText, mxXmlRequest
 getTextContent, mxUtils
 getTextRotation
 getTextScale, mxCellRenderer
 getTitle, mxEditor
 getTolerance
 getTooltip, mxGraph
 getTooltipForCell, mxGraph
 getTooltipForNode
 getTopmostCells, mxGraphModel
 getTotalRotation, mxVertexHandler
 getTranslate, mxGraphView
 getTranslateForEvent, mxOutline
 getTranslateForRoot, mxGraph
 getUrlImage, mxEditor
 getUrlPost, mxEditor
 getValidState, mxCellMarker
 getValue
 getValues, mxDictionary
 getVertexBounds, mxGraphLayout
 getVerticalAlign, mxGraph
 getView, mxGraph
 getViewXml, mxUtils
 getVisibleTerminal
 getVisibleTerminalState, mxCellState
 getVmlDashPattern, mxVmlCanvas2D
 getWindow, mxPrintPreview
 getX
 getXml
 getY
 gradients, mxSvgCanvas2D
 graph
 Graph appearance, mxGraph
 Graph behaviour, mxGraph
 Graph display, mxGraph
 Graph events, mxGraph
 graphBounds, mxGraphView
 graphContainsEvent, mxDragSource
 graphModelChanged
 graphRenderHint
 graphX, mxMouseEvent
 graphY, mxMouseEvent
 gridEnabled
 gridSize, mxGraph
 GROUP_CELLS
 groupCells
 Grouping, mxGraph
 groupPadding
 groupPaddingBottom, mxCompactTreeLayout
 groupPaddingLeft, mxCompactTreeLayout
 groupPaddingRight, mxCompactTreeLayout
 groupPaddingTop, mxCompactTreeLayout
 grow, mxRectangle
 guide, mxGraphHandler
 GUIDE_COLOR, mxConstants
 GUIDE_STROKEWIDTH, mxConstants
 guidesEnabled
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 geometry, mxCell
 geometryForCellChanged, mxGraphModel
 GESTURE
 get
 GET, mxEvent
 getAlignmentAsPoint, mxUtils
 getAlignmentTolerance, mxConnectionHandler
 getAllConnectionConstraints, mxGraph
 getAllEdges, mxGraph
 getAlternateContent, mxSvgCanvas2D
 getAppendices, mxPrintPreview
 getArcSize
 getAttribute, mxCell
 getAttributeName, mxObjectCodec
 getBackgroundImage, mxGraph
 getBackgroundPageBounds, mxGraphView
 getBackgroundPane, mxGraphView
 getBaseDomain, mxUrlConverter
 getBaseUrl
 getBorder, mxGraph
 getBorderSizes, mxGraph
 getBoundingBox
 getBoundingBoxFromGeometry, mxGraph
 getBounds
 getBoundsForGroup, mxGraph
 getCanvas, mxGraphView
 getCell
 getCellAt
 getCellBounds
 getCellContainmentArea, mxGraph
 getCellForPopupEvent, mxPopupMenuHandler
 getCellGeometry, mxGraph
 getCellOverlays, mxGraph
 getCells
 getCellsBeyond, mxGraph
 getCellsForChange, mxLayoutManager
 getCellsForEdit, mxLayoutManager
 getCellsForGroup, mxGraph
 getCellStates, mxGraphView
 getCellsToShift, mxSpaceManager
 getCellStyle
 getCellValidationError, mxGraph
 getCenterX, mxRectangle
 getCenterY, mxRectangle
 getChildAt
 getChildCells
 getChildCount
 getChildEdges
 getChildNodes, mxUtils
 getChildOffsetForCell, mxGraph
 getChildren, mxGraphModel
 getChildVertices
 getClientX, mxEvent
 getClientY, mxEvent
 getCloneableCells, mxGraph
 getCodec, mxCodecRegistry
 getColor, mxUtils
 getConnectImage, mxConnectionHandler
 getConnectionConstraint, mxGraph
 getConnectionPoint, mxGraph
 getConnections
 getConstraint, mxGraphLayout
 getControlBounds, mxCellRenderer
 getCoreCell
 getCoverPages, mxPrintPreview
 getCurrentHtmlValue, mxCellEditor
 getCurrentPoints
 getCurrentRoot, mxGraph
 getCurrentStrokeWidth, mxSvgCanvas2D
 getCurrentStyle, mxUtils
 getCurrentValue, mxCellEditor
 getCursor, mxShape
 getCursorForBend, mxElbowEdgeHandler
 getCursorForCell, mxGraph
 getCursorForMouseEvent, mxGraph
 getDecoratorPane, mxGraphView
 getDefaultBundle, mxResources
 getDefaultEdgeStyle, mxStylesheet
 getDefaultParent, mxGraph
 getDefaultVertexStyle, mxStylesheet
 getDeletableCells, mxGraph
 getDelta
 getDescendants, mxGraphModel
 getDirectedEdgeCount, mxGraphModel
 getDocType, mxPrintPreview
 getDocumentElement, mxXmlRequest
 getDocumentHeight, mxDivResizer
 getDocumentScrollOrigin, mxUtils
 getDocumentWidth, mxDivResizer
 getDrawPane, mxGraphView
 getDropTarget
 getEdgeAt
 getEdgeColor, mxConnectionHandler
 getEdgeCount
 getEdgeId, mxParallelEdgeLayout
 getEdgeIndex, mxCell
 getEdges
 getEdgesBetween
 getEdgeStyle
 getEdgeValidationError, mxGraph
 getEdgeWidth, mxConnectionHandler
 getEditingCell, mxCellEditor
 getEditingValue, mxGraph
 getEditorBounds, mxCellEditor
 getElement, mxWindow
 getElementById, mxCodec
 getEmptyBounds, mxGraphView
 getEmptyLabelText, mxCellEditor
 getEvent, mxMouseEvent
 getEventSource, mxEventSource
 getExportableCells, mxGraph
 getFieldName, mxObjectCodec
 getFieldTemplate, mxObjectCodec
 getFirstSelectableCell, mxGraphSelectionModel
 getFoldableCells, mxGraph
 getFoldingImage, mxGraph
 getFunction, mxKeyHandler
 getFunctionName, mxUtils
 getGeneralPurposeVariable
 getGeometry
 getGradientBounds
 getGraph
 getGraphBounds
 getGraphForEvent, mxDragSource
 getGraphX, mxMouseEvent
 getGraphY, mxMouseEvent
 getGridSize, mxGraph
 getGuideStates, mxGraphHandler
 getGuideTolerance, mxGuide
 getHandleFillColor, mxEdgeHandler
 getHandleForEvent
 getHandler, mxSelectionCellsHandler
 getHotspot, mxCellMarker
 getId
 getImage
 getImageBounds
 getImageForConstraint, mxConstraintHandler
 getImageFromBundles, mxGraph
 getImportableCells, mxGraph
 getIncomingEdges
 getIndex, mxCell
 getIndicatorBounds, mxLabel
 getIndicatorColor, mxGraph
 getIndicatorGradientColor, mxGraph
 getIndicatorImage, mxGraph
 getIndicatorShape, mxGraph
 getInitialCellForEvent, mxGraphHandler
 getInitialValue, mxCellEditor
 getInnerHtml, mxUtils
 getKeys, mxDictionary
 getLabel, mxGraph
 getLabelBounds
 getLabelValue, mxCellRenderer
 getLayout, mxLayoutManager
 getLinkForCellState, mxImageExport
 getMainEvent, mxEvent
 getMargin, mxText
 getMarkedState, mxCellMarker
 getMarkerColor, mxCellMarker
 getMaximumGraphBounds, mxGraph
 getMinimumSize
 getModel
 getMovableCells, mxGraph
 getName
 getNearestCommonAncestor, mxGraphModel
 getNextLayerConnectedCells
 getNextPoint, mxGraphView
 getNumber, mxUtils
 getObject, mxCodec
 getOffset, mxUtils
 getOpposites
 getOrigin, mxGraphModel
 getOriginForCell, mxMorphing
 getOuterHtml, mxUtils
 getOutgoingEdges
 getOutlineConstraint, mxGraph
 getOutlineOffset, mxOutline
 getOverlap, mxGraph
 getOverlayPane, mxGraphView
 getPaintBounds, mxCellState
 getParent
 getParentOffset, mxGraphLayout
 getParentPath, mxCellPath
 getParents, mxGraphModel
 getParentSize, mxStackLayout
 getPerimeterBounds
 getPerimeterFunction, mxGraphView
 getPerimeterPoint, mxGraphView
 getPoint
 getPointForEvent
 getPosition, mxVertexHandler
 getPreferredPageSize, mxGraph
 getPreferredSizeForCell, mxGraph
 getPrettyXML, mxUtils
 getPreviewBounds, mxGraphHandler
 getPreviewPoints
 getPreviewTerminalState, mxEdgeHandler
 getPreviousLayerConnectedCells
 getProperties, mxEventObject
 getProperty, mxEventObject
 getRadius, mxCircleLayout
 getRankValue, mxGraphHierarchyNode
 getRelativePoint, mxGraphView
 getRemovedCellsForChanges, mxGraph
 getRoot
 getRootTitle, mxEditor
 getRotatedPoint, mxUtils
 getRotation
 getRoutingCenterX, mxGraphView
 getRoutingCenterY, mxGraphView
 getScale, mxGraphView
 getScaleForPageCount, mxUtils
 getScrollOrigin, mxUtils
 getSelectionBounds, mxVertexHandler
 getSelectionCell, mxGraph
 getSelectionCells, mxGraph
 getSelectionCellsForChanges, mxGraph
 getSelectionColor
 getSelectionCount, mxGraph
 getSelectionModel, mxGraph
 getSelectionPoints, mxEdgeHandler
 getSelectionStrokeWidth
 getShape, mxCellRenderer
 getShapeConstructor, mxCellRenderer
 getShapeRotation
 getShapesForState, mxCellRenderer
 getSizeForString, mxUtils
 getSnapToTerminalTolerance, mxEdgeHandler
 getSource
 getSourceContainerSize, mxOutline
 getSourcePerimeterPoint, mxConnectionHandler
 getSpacing, mxText
 getSpecialBundle, mxResources
 getStartSize, mxGraph
 getState
 getStateForEvent, mxGraph
 getStates, mxGraphView
 getStateToMark, mxCellMarker
 getStatus, mxXmlRequest
 getStencil, mxStencilRegistry
 getStringValue, mxStylesheetCodec
 getStyle
 getStylename, mxUtils
 getStylenames, mxUtils
 getStylesheet, mxGraph
 getSvgGradient, mxSvgCanvas2D
 getSvgScreenOffset
 getSwimlane, mxGraph
 getSwimlaneAt, mxGraph
 getTable, mxForm
 getTargetPerimeterPoint, mxConnectionHandler
 getTemplate, mxEditor
 getTerminal
 getTerminalForPort, mxGraph
 getTerminalPoint, mxGeometry
 getTerminalPort, mxGraphView
 getText, mxXmlRequest
 getTextContent, mxUtils
 getTextRotation
 getTextScale, mxCellRenderer
 getTitle, mxEditor
 getTolerance
 getTooltip, mxGraph
 getTooltipForCell, mxGraph
 getTooltipForNode
 getTopmostCells, mxGraphModel
 getTotalRotation, mxVertexHandler
 getTranslate, mxGraphView
 getTranslateForEvent, mxOutline
 getTranslateForRoot, mxGraph
 getUrlImage, mxEditor
 getUrlPost, mxEditor
 getValidState, mxCellMarker
 getValue
 getValues, mxDictionary
 getVertexBounds, mxGraphLayout
 getVerticalAlign, mxGraph
 getView, mxGraph
 getViewXml, mxUtils
 getVisibleTerminal
 getVisibleTerminalState, mxCellState
 getVmlDashPattern, mxVmlCanvas2D
 getWindow, mxPrintPreview
 getX
 getXml
 getY
 gradients, mxSvgCanvas2D
 graph
 Graph appearance, mxGraph
 Graph behaviour, mxGraph
 Graph display, mxGraph
 Graph events, mxGraph
 graphBounds, mxGraphView
 graphContainsEvent, mxDragSource
 graphModelChanged
 graphRenderHint
 graphX, mxMouseEvent
 graphY, mxMouseEvent
 gridEnabled
 gridSize, mxGraph
 GROUP_CELLS
 groupCells
 Grouping, mxGraph
 groupPadding
 groupPaddingBottom, mxCompactTreeLayout
 groupPaddingLeft, mxCompactTreeLayout
 groupPaddingRight, mxCompactTreeLayout
 groupPaddingTop, mxCompactTreeLayout
 grow, mxRectangle
 guide, mxGraphHandler
 GUIDE_COLOR, mxConstants
 GUIDE_STROKEWIDTH, mxConstants
 guidesEnabled
-
mxCell.prototype.geometry
Holds the mxGeometry.
mxGraphModel.prototype.geometryForCellChanged = function(cell,
geometry)
Inner callback to update the mxGeometry of the given mxCell using mxCell.setGeometry and return the previous mxGeometry.
Specifies the event name for gesture.
Fires in fireGestureEvent after a touch gesture.
mxDictionary.prototype.get = function(key)
Returns the value for the given key.
get: function(obj)
Returns the object id for the given object.
get: function(key,
params,
defaultValue)
Returns the value for the specified resource key.
get: function(url,
onload,
onerror)
Loads the specified URL asynchronously and invokes the given functions depending on the request status.
Specifies the event name for get.
getAlignmentAsPoint: function(align,
valign)
Returns an mxPoint that represents the horizontal and vertical alignment for numeric computations.
mxConnectionHandler.prototype.getAlignmentTolerance = function(evt)
Returns the tolerance for aligning new targets to sources.
mxGraph.prototype.getAllConnectionConstraints = function(terminal,
source)
Returns an array of all mxConnectionConstraints for the given terminal.
mxGraph.prototype.getAllEdges = function(cells)
Returns all edges connected to the given cells or its descendants.
Returns the alternate content for the given foreignObject.
mxPrintPreview.prototype.getAppendices = function()
Returns the pages to be added after the print output.
mxShape.prototype.getArcSize = function(w,
h)
Returns the arc size for the given dimension.
mxSwimlane.prototype.getArcSize = function(w,
h,
start)
Returns the arcsize for the swimlane.
mxCell.prototype.getAttribute = function(name,
defaultValue)
Returns the specified attribute from the user object if it is an XML node.
mxObjectCodec.prototype.getAttributeName = function(fieldname)
Returns the attributename for the given fieldname.
mxGraph.prototype.getBackgroundImage = function()
Returns the backgroundImage as an mxImage.
mxGraphView.prototype.getBackgroundPageBounds = function()
Returns the bounds for the background page.
mxGraphView.prototype.getBackgroundPane = function()
Returns the DOM node that represents the background layer.
mxUrlConverter.prototype.getBaseDomain = function()
Returns baseDomain.
mxSvgCanvas2D.prototype.getBaseUrl = function()
Returns the URL of the page without the hash part.
mxUrlConverter.prototype.getBaseUrl = function()
Returns baseUrl.
mxGraph.prototype.getBorder = function()
Returns the value of border.
mxGraph.prototype.getBorderSizes = function()
Returns the size of the border and padding on all four sides of the container.
mxGraphHandler.prototype.getBoundingBox = function(cells)
Returns the mxRectangle that represents the bounding box for the given cells.
mxGraphView.prototype.getBoundingBox = function(state,
recurse)
Returns the bounding box of the shape and the label for the given mxCellState and its children if recurse is true.
getBoundingBox: function(rect,
rotation,
cx)
Returns the bounding box for the rotated rectangle.
mxGraph.prototype.getBoundingBoxFromGeometry = function(cells,
includeEdges)
Returns the bounding box for the geometries of the vertices in the given array of cells.
mxCellOverlay.prototype.getBounds = function(state)
Returns the bounds of the overlay for the given mxCellState as an mxRectangle.
mxGraphView.prototype.getBounds = function(cells)
Returns the bounds (on the screen) for the given array of mxCells.
mxGraph.prototype.getBoundsForGroup = function(group,
children,
border)
Returns the bounds to be used for the given group and children.
mxGraphView.prototype.getCanvas = function()
Returns the DOM node that contains the background-, draw- and overlay- and decoratorpanes.
mxCellMarker.prototype.getCell = function(me)
Returns the mxCell for the given event and cell.
mxGraphModel.prototype.getCell = function(id)
Returns the mxCell for the specified Id or null if no cell can be found for the given Id.
mxMouseEvent.prototype.getCell = function()
Returns the mxCell in state is not null.
mxConnectionHandler.prototype.getCellAt = function(x,
y)
Creates and returns the mxCellMarker used in marker.
mxEdgeHandler.prototype.getCellAt = function(x,
y)
Creates and returns the mxCellMarker used in marker.
mxGraph.prototype.getCellAt = function(x,
y,
parent,
vertices,
edges)
Returns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy starting at the given parent.
mxCellState.prototype.getCellBounds = function ()
Returns the unscaled, untranslated bounds.
mxGraph.prototype.getCellBounds = function(cell,
includeEdges,
includeDescendants)
Returns the scaled, translated bounds for the given cell.
mxGraph.prototype.getCellContainmentArea = function(cell)
Returns the mxRectangle inside which a cell is to be kept.
mxPopupMenuHandler.prototype.getCellForPopupEvent = function(me)
Hook to return the cell for the mouse up popup trigger handling.
mxGraph.prototype.getCellGeometry = function(cell)
Returns the mxGeometry for the given cell.
mxGraph.prototype.getCellOverlays = function(cell)
Returns the array of mxCellOverlays for the given cell or null, if no overlays are defined.
getCells: function()
Returns the cells in the clipboard.
mxGraph.prototype.getCells = function(x,
y,
width,
height,
parent,
result)
Returns the child vertices and edges of the given parent that are contained in the given rectangle.
mxGraphHandler.prototype.getCells = function(initialCell)
Returns the cells to be modified by this handler.
mxGraph.prototype.getCellsBeyond = function(x0,
y0,
parent,
rightHalfpane,
bottomHalfpane)
Returns the children of the given parent that are contained in the halfpane from the given point (x0, y0) rightwards and/or downwards depending on rightHalfpane and bottomHalfpane.
mxLayoutManager.prototype.getCellsForChange = function(change)
Executes all layouts which have been scheduled during the changes.
Returns the cells to be layouted for the given sequence of changes.
mxGraph.prototype.getCellsForGroup = function(cells)
Returns the cells with the same parent as the first cell in the given array.
mxGraphView.prototype.getCellStates = function(cells)
Returns the mxCellStates for the given array of mxCells.
mxSpaceManager.prototype.getCellsToShift = function(state)
Returns the cells to shift after a resize of the specified mxCellState.
mxGraph.prototype.getCellStyle = function(cell)
Returns an array of key, value pairs representing the cell style for the given cell.
mxStylesheet.prototype.getCellStyle = function(name,
defaultStyle)
Returns the cell style for the specified stylename or the given defaultStyle if no style can be found for the given stylename.
mxGraph.prototype.getCellValidationError = function(cell)
Checks all multiplicities that cannot be enforced while the graph is being modified, namely, all multiplicities that require a minimum of 1 edge.
mxRectangle.prototype.getCenterX = function ()
Returns the x-coordinate of the center point.
mxRectangle.prototype.getCenterY = function ()
Returns the y-coordinate of the center point.
mxCell.prototype.getChildAt = function(index)
Returns the child at the specified index.
mxGraphModel.prototype.getChildAt = function(cell,
index)
Returns the child of the given mxCell at the given index.
mxGraph.prototype.getChildCells = function(parent,
vertices,
edges)
Returns the visible child vertices or edges in the given parent.
mxGraphModel.prototype.getChildCells = function(parent,
vertices,
edges)
Returns the children of the given cell that are vertices and/or edges depending on the arguments.
mxCell.prototype.getChildCount = function()
Returns the number of child cells.
mxGraphModel.prototype.getChildCount = function(cell)
Returns the number of children in the given cell.
mxGraph.prototype.getChildEdges = function(parent)
Returns the visible child edges of the given parent.
mxGraphModel.prototype.getChildEdges = function(parent)
Returns the child edges of the given parent.
getChildNodes: function(node,
nodeType)
Returns an array of child nodes that are of the given node type.
mxGraph.prototype.getChildOffsetForCell = function(cell)
Returns the offset to be used for the cells inside the given cell.
mxGraphModel.prototype.getChildren = function(cell)
Returns all children of the given mxCell as an array of mxCells.
mxGraph.prototype.getChildVertices = function(parent)
Returns the visible child vertices of the given parent.
mxGraphModel.prototype.getChildVertices = function(parent)
Returns the child vertices of the given parent.
getClientX: function(e)
Returns true if the meta key is pressed for the given event.
getClientY: function(e)
Returns true if the meta key is pressed for the given event.
mxGraph.prototype.getCloneableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
getCodec: function(ctor)
Returns a codec that handles objects that are constructed using the given constructor.
getColor: function(array,
key,
defaultValue)
Returns the color value for the given key in the given associative array or the given default value if the value is null.
mxConnectionHandler.prototype.getConnectImage = function(state)
Hook to return the mxImage used for the connection icon of the given mxCellState.
mxGraph.prototype.getConnectionConstraint = function(edge,
terminal,
source)
Returns an mxConnectionConstraint that describes the given connection point.
mxGraph.prototype.getConnectionPoint = function(vertex,
constraint)
Returns the nearest point in the list of absolute points or the center of the opposite terminal.
mxGraph.prototype.getConnections = function(cell,
parent)
Returns all visible edges connected to the given cell without loops.
mxGraphModel.prototype.getConnections = function(cell)
Returns all edges of the given cell without loops.
mxGraphLayout.prototype.getConstraint = function(key,
cell,
edge,
source)
Returns the constraint for the given key and cell.
mxCellRenderer.prototype.getControlBounds = function(state,
w,
h)
Returns the bounds to be used to draw the control (folding icon) of the given state.
mxGraphHierarchyEdge.prototype.getCoreCell = function()
Gets the first core edge associated with this wrapper
mxGraphHierarchyNode.prototype.getCoreCell = function()
Gets the core vertex associated with this wrapper
mxPrintPreview.prototype.getCoverPages = function()
Returns the pages to be added before the print output.
mxCellEditor.prototype.getCurrentHtmlValue = function()
Returns the current value as HTML to measure the text size.
mxEdgeSegmentHandler.prototype.getCurrentPoints = function()
Returns the current absolute points.
mxGraph.prototype.getCurrentRoot = function()
Returns the current root of the displayed cell hierarchy.
mxSvgCanvas2D.prototype.getCurrentStrokeWidth = function()
Returns the current stroke width (>= 1), ie.
getCurrentStyle: function()
Returns the current style of the specified element.
mxCellEditor.prototype.getCurrentValue = function()
Returns the current editing value.
mxShape.prototype.getCursor = function()
Returns the current cursor.
mxElbowEdgeHandler.prototype.getCursorForBend = function()
Returns the cursor to be used for the bend.
mxGraph.prototype.getCursorForCell = function(cell)
Returns the cursor value to be used for the CSS of the shape for the given cell.
mxGraph.prototype.getCursorForMouseEvent = function(me)
Returns the cursor value to be used for the CSS of the shape for the given event.
mxGraphView.prototype.getDecoratorPane = function()
Returns the DOM node that represents the topmost drawing layer.
getDefaultBundle: function(basename,
lan)
Hook for subclassers to return the URL for the special bundle.
mxStylesheet.prototype.getDefaultEdgeStyle = function()
Sets the default style for edges.
mxGraph.prototype.getDefaultParent = function()
Returns defaultParent or mxGraphView.currentRoot or the first child child of mxGraphModel.root if both are null.
mxStylesheet.prototype.getDefaultVertexStyle = function()
Returns the default style for vertices.
mxGraph.prototype.getDeletableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
mxGraphHandler.prototype.getDelta = function(me)
Returns an mxPoint that represents the vector for moving the cells for the given mxMouseEvent.
mxMorphing.prototype.getDelta = function(state)
Returns the vector between the current rendered state and the future location of the state after the display will be updated.
mxGraphModel.prototype.getDescendants = function(parent)
Returns all descendants of the given cell and the cell itself in an array.
mxGraphModel.prototype.getDirectedEdgeCount = function(cell,
outgoing,
ignoredEdge)
Returns the number of incoming or outgoing edges, ignoring the given edge.
Returns the string that should go before the HTML tag in the print preview page.
mxXmlRequest.prototype.getDocumentElement = function()
Returns the document element of the response XML document.
mxDivResizer.prototype.getDocumentHeight = function()
Hook for subclassers to return the height of the document (without scrollbars).
getDocumentScrollOrigin: function(doc)
Returns the scroll origin of the given document or the current document if no document is given.
mxDivResizer.prototype.getDocumentWidth = function()
Hook for subclassers to return the width of the document (without scrollbars).
mxGraphView.prototype.getDrawPane = function()
Returns the DOM node that represents the main drawing layer.
mxDragSource.prototype.getDropTarget = function(graph,
x,
y,
evt)
Returns the drop target for the given graph and coordinates.
mxGraph.prototype.getDropTarget = function(cells,
evt,
cell,
clone)
Returns the given cell if it is a drop target for the given cells or the nearest ancestor that may be used as a drop target for the given cells.
mxCell.prototype.getEdgeAt = function(index)
Returns the edge at the specified index in edges.
mxGraphModel.prototype.getEdgeAt = function(cell,
index)
Returns the edge of cell at the given index.
mxConnectionHandler.prototype.getEdgeColor = function(valid)
Returns the color used to draw the preview edge.
mxCell.prototype.getEdgeCount = function()
Returns the number of edges in the edge array.
mxGraphModel.prototype.getEdgeCount = function(cell)
Returns the number of distinct edges connected to the given cell.
mxParallelEdgeLayout.prototype.getEdgeId = function(edge)
Returns a unique ID for the given edge.
mxCell.prototype.getEdgeIndex = function(edge)
Returns the index of the specified edge in edges.
mxGraph.prototype.getEdges = function(cell,
parent,
incoming,
outgoing,
includeLoops,
recurse)
Returns the incoming and/or outgoing edges for the given cell.
mxGraphModel.prototype.getEdges = function(cell,
incoming,
outgoing,
includeLoops)
Returns all distinct edges connected to this cell as a new array of mxCells.
mxHierarchicalLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxSwimlaneLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxGraph.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxGraphModel.prototype.getEdgesBetween = function(source,
target,
directed)
Returns all edges between the given source and target pair.
mxHierarchicalLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxSwimlaneLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxEditor.prototype.getEdgeStyle = function ()
Returns a string identifying the style of new edges.
mxGraphView.prototype.getEdgeStyle = function(edge,
points,
source,
target)
Returns the edge style function to be used to render the given edge state.
mxGraph.prototype.getEdgeValidationError = function(edge,
source,
target)
Returns the validation error message to be displayed when inserting or changing an edges’ connectivity.
mxConnectionHandler.prototype.getEdgeWidth = function(valid)
Returns the width used to draw the preview edge.
mxCellEditor.prototype.getEditingCell = function ()
Returns the cell that is currently being edited or null if no cell is being edited.
mxGraph.prototype.getEditingValue = function(cell,
evt)
Returns the initial value for in-place editing.
mxCellEditor.prototype.getEditorBounds = function(state)
Returns the mxRectangle that defines the bounds of the editor.
mxWindow.prototype.getElement = function()
Returuns the outermost DOM node that makes up the window.
mxCodec.prototype.getElementById = function(id,
attr)
Returns the element with the given ID from document.
mxGraphView.prototype.getEmptyBounds = function()
Returns the bounds for an empty graph.
mxCellEditor.prototype.getEmptyLabelText = function (cell)
Returns the initial label value to be used of the label of the given cell is empty.
mxMouseEvent.prototype.getEvent = function()
Returns evt.
mxEventSource.prototype.getEventSource = function()
Returns eventSource.
mxGraph.prototype.getExportableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
mxObjectCodec.prototype.getFieldName = function(attributename)
Returns the fieldname for the given attributename.
mxObjectCodec.prototype.getFieldTemplate = function(obj,
fieldname,
child)
Returns the template instance for the given field.
mxGraphSelectionModel.prototype.getFirstSelectableCell = function(cells)
Returns the first selectable cell in the given array of cells.
mxGraph.prototype.getFoldableCells = function(cells,
collapse)
Returns the cells which are movable in the given array of cells.
mxGraph.prototype.getFoldingImage = function(state)
Returns the mxImage used to display the collapsed state of the specified cell state.
mxKeyHandler.prototype.getFunction = function(evt)
Returns the function associated with the given key event or null if no function is associated with the given event.
getFunctionName: function(f)
Returns the name for the given function.
mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable = function(
   layer
)
Gets the value of temp for the specified layer
mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable = function(layer)
Gets the value of temp for the specified layer
mxGraphHierarchyNode.prototype.getGeneralPurposeVariable = function(layer)
Gets the value of temp for the specified layer
mxCell.prototype.getGeometry = function()
Returns the mxGeometry that describes the geometry.
mxGraphModel.prototype.getGeometry = function(cell)
Returns the mxGeometry of the given mxCell.
mxShape.prototype.getGradientBounds = function(c,
x,
y,
w,
h)
Returns the bounding box for the gradient box for this shape.
Returns the bounding box for the gradient box for this shape.
mxGraphLayout.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxLayoutManager.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxSpaceManager.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxSwimlaneManager.prototype.getGraph = function()
Returns the graph that this manager operates on.
mxGraph.prototype.getGraphBounds = function()
Returns the bounds of the visible graph.
mxGraphView.prototype.getGraphBounds = function()
Returns graphBounds.
mxDragSource.prototype.getGraphForEvent = function(evt)
Returns the graph for the given mouse event.
mxMouseEvent.prototype.getGraphX = function()
Returns graphX.
mxMouseEvent.prototype.getGraphY = function()
Returns graphY.
mxGraph.prototype.getGridSize = function()
Returns gridSize.
mxGraphHandler.prototype.getGuideStates = function()
Creates an array of cell states which should be used as guides.
mxGuide.prototype.getGuideTolerance = function()
Returns the tolerance for the guides.
mxEdgeHandler.prototype.getHandleFillColor = function(index)
Returns the fillcolor for the handle at the given index.
mxEdgeHandler.prototype.getHandleForEvent = function(me)
Returns the index of the handle for the given event.
mxVertexHandler.prototype.getHandleForEvent = function(me)
Returns the index of the handle for the given event.
mxSelectionCellsHandler.prototype.getHandler = function(cell)
Returns the handler for the given cell.
mxCellMarker.prototype.getHotspot = function()
Returns the hotspot.
mxCell.prototype.getId = function()
Returns the Id of the cell as a string.
mxCodec.prototype.getId = function(obj)
Returns the ID of the specified object.
mxGraph.prototype.getImage = function(state)
Returns the image URL for the given cell state.
mxImageBundle.prototype.getImage = function(key)
Returns the value for the given key.
mxLabel.prototype.getImageBounds = function(x,
y,
w,
h)
Generic background painting implementation.
mxSwimlane.prototype.getImageBounds = function(x,
y,
w,
h)
Paints the swimlane vertex shape.
mxConstraintHandler.prototype.getImageForConstraint = function(state,
constraint,
point)
Returns the tolerance to be used for intersecting connection points.
mxGraph.prototype.getImageFromBundles = function(key)
Searches all imageBundles for the specified key and returns the value for the first match or null if the key is not found.
mxGraph.prototype.getImportableCells = function(cells)
Returns the cells which may be imported in the given array of cells.
mxGraph.prototype.getIncomingEdges = function(cell,
parent)
Returns the visible incoming edges for the given cell.
mxGraphModel.prototype.getIncomingEdges = function(cell)
Returns the incoming edges of the given cell without loops.
mxCell.prototype.getIndex = function(child)
Returns the index of the specified child in the child array.
mxLabel.prototype.getIndicatorBounds = function(x,
y,
w,
h)
Generic background painting implementation.
mxGraph.prototype.getIndicatorColor = function(state)
Returns the indicator color for the given cell state.
mxGraph.prototype.getIndicatorGradientColor = function(state)
Returns the indicator gradient color for the given cell state.
mxGraph.prototype.getIndicatorImage = function(state)
Returns the indicator image for the given cell state.
mxGraph.prototype.getIndicatorShape = function(state)
Returns the indicator shape for the given cell state.
mxGraphHandler.prototype.getInitialCellForEvent = function(me)
Hook to return initial cell for the given event.
mxCellEditor.prototype.getInitialValue = function(state,
trigger)
Gets the initial editing value for the given cell.
getInnerHtml: function()
Returns the inner HTML for the given node as a string or an empty string if no node was specified.
mxDictionary.prototype.getKeys = function()
Returns all keys as an array.
mxGraph.prototype.getLabel = function(cell)
Returns a string or DOM node that represents the label for the given cell.
mxCellRenderer.prototype.getLabelBounds = function(state)
Returns the bounds to be used to draw the label of the given state.
mxDoubleEllipse.prototype.getLabelBounds = function(rect)
Returns the bounds for the label.
mxShape.prototype.getLabelBounds = function(rect)
Returns the mxRectangle for the label bounds of this shape, based on the given scaled and translated bounds of the shape.
mxCellRenderer.prototype.getLabelValue = function(state)
Returns the value to be used for the label.
mxLayoutManager.prototype.getLayout = function(parent)
Returns the layout to be executed for the given graph and parent.
mxImageExport.prototype.getLinkForCellState = function(state,
canvas)
Returns the link for the given cell state and canvas.
getMainEvent: function(e)
Returns the touch or mouse event that contains the mouse coordinates.
Returns the spacing as an mxPoint.
mxCellMarker.prototype.getMarkedState = function()
Returns the markedState.
mxCellMarker.prototype.getMarkerColor = function(evt,
state,
isValid)
Returns the valid- or invalidColor depending on the value of isValid.
mxGraph.prototype.getMaximumGraphBounds = function()
Returns the bounds inside which the diagram should be kept as an mxRectangle.
mxCellEditor.prototype.getMinimumSize = function(state)
Returns the minimum width and height for editing the given state.
mxWindow.prototype.getMinimumSize = function()
Returns an mxRectangle that specifies the size for the minimized window.
mxGraph.prototype.getModel = function()
Returns the mxGraphModel that contains the cells.
mxHierarchicalLayout.prototype.getModel = function()
Returns the internal mxGraphHierarchyModel for this layout algorithm.
mxSwimlaneLayout.prototype.getModel = function()
Returns the internal mxSwimlaneModel for this layout algorithm.
mxGraph.prototype.getMovableCells = function(cells)
Returns the cells which are movable in the given array of cells.
mxEventObject.prototype.getName = function()
Returns name.
mxObjectCodec.prototype.getName = function()
Returns the name used for the nodenames and lookup of the codec when classes are encoded and nodes are decoded.
getName: function(value)
Returns the name for the given value.
mxGraphModel.prototype.getNearestCommonAncestor = function(cell1,
cell2)
Returns the nearest common ancestor for the specified cells.
mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells = function(
   layer
)
Returns the cells this cell connects to on the next layer up
mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer up
mxGraphHierarchyNode.prototype.getNextLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer up
mxGraphView.prototype.getNextPoint = function(edge,
opposite,
source)
Returns the nearest point in the list of absolute points or the center of the opposite terminal.
getNumber: function(array,
key,
defaultValue)
Returns the numeric value for the given key in the given associative array or the given default value (or 0) if the value is null.
mxCodec.prototype.getObject = function(id)
Returns the decoded object for the element with the specified ID in document.
getOffset: function(container,
scrollOffset)
Returns the offset for the specified container as an mxPoint.
mxGraph.prototype.getOpposites = function(edges,
terminal,
sources,
targets)
Returns all distinct visible opposite cells for the specified terminal on the given edges.
mxGraphModel.prototype.getOpposites = function(edges,
terminal,
sources,
targets)
Returns all opposite vertices wrt terminal for the given edges, only returning sources and/or targets as specified.
mxGraphModel.prototype.getOrigin = function(cell)
Returns the absolute, accumulated origin for the children inside the given parent as an mxPoint.
mxMorphing.prototype.getOriginForCell = function(cell)
Returns the top, left corner of the given cell.
getOuterHtml: function()
Returns the outer HTML for the given node as a string or an empty string if no node was specified.
mxGraph.prototype.getOutgoingEdges = function(cell,
parent)
Returns the visible outgoing edges for the given cell.
mxGraphModel.prototype.getOutgoingEdges = function(cell)
Returns the outgoing edges of the given cell without loops.
mxGraph.prototype.getOutlineConstraint = function(point,
terminalState,
me)
Returns the constraint used to connect to the outline of the given state.
mxOutline.prototype.getOutlineOffset = function(scale)
Returns the offset for drawing the outline graph.
mxGraph.prototype.getOverlap = function(cell)
Returns a decimal number representing the amount of the width and height of the given cell that is allowed to overlap its parent.
mxGraphView.prototype.getOverlayPane = function()
Returns the DOM node that represents the layer above the drawing layer.
mxCellState.prototype.getPaintBounds = function ()
Returns the unscaled, untranslated paint bounds.
mxCell.prototype.getParent = function()
Returns the cell’s parent.
mxGraphModel.prototype.getParent = function(cell)
Returns the parent of the given cell.
mxGraphLayout.prototype.getParentOffset = function(parent)
Determines the offset of the given parent to the parent of the layout
getParentPath: function(path)
Returns the path for the parent of the cell represented by the given path.
mxGraphModel.prototype.getParents = function(cells)
Returns an array that represents the set (no duplicates) of all parents for the given array of cells.
mxStackLayout.prototype.getParentSize = function(parent)
Returns the size for the parent container or the size of the graph container if the parent is a layer or the root of the model.
mxCellState.prototype.getPerimeterBounds = function (border,
bounds)
Returns the mxRectangle that should be used as the perimeter of the cell.
mxGraphView.prototype.getPerimeterBounds = function(terminal,
border)
Returns the perimeter bounds for the given terminal, edge pair as an mxRectangle.
mxGraphView.prototype.getPerimeterFunction = function(state)
Returns the perimeter function for the given state.
mxGraphView.prototype.getPerimeterPoint = function(terminal,
next,
orthogonal,
border)
Returns an mxPoint that defines the location of the intersection point between the perimeter and the line between the center of the shape and the given point.
mxGraphView.prototype.getPoint = function(state,
geometry)
Returns the absolute point on the edge for the given relative mxGeometry as an mxPoint.
mxRectangle.prototype.getPoint = function()
Returns the top, left corner as a new mxPoint.
mxEdgeHandler.prototype.getPointForEvent = function(me)
Returns the point for the given event.
mxGraph.prototype.getPointForEvent = function(evt,
addOffset)
Returns an mxPoint representing the given event in the unscaled, non-translated coordinate space of container and applies the grid.
mxHandle.prototype.getPosition = function(bounds)
Hook for subclassers to return the current position of the handle.
mxGraph.prototype.getPreferredPageSize = function(bounds,
width,
height)
Returns the preferred size of the background page if preferPageSize is true.
mxGraph.prototype.getPreferredSizeForCell = function(cell)
Returns the preferred width and height of the given mxCell as an mxRectangle.
Returns a pretty printed string that represents the XML tree for the given node.
mxGraphHandler.prototype.getPreviewBounds = function(cells)
Returns the mxRectangle used as the preview bounds for moving the given cells.
mxEdgeSegmentHandler.prototype.getPreviewPoints = function(point)
Updates the given preview state taking into account the state of the constraint handler.
mxEdgeHandler.prototype.getPreviewPoints = function(pt)
Updates the given preview state taking into account the state of the constraint handler.
mxEdgeHandler.prototype.getPreviewTerminalState = function(me)
Updates the given preview state taking into account the state of the constraint handler.
mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells = function(
   layer
)
Returns the cells this cell connects to on the next layer down
mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer down
mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer down
mxEventObject.prototype.getProperties = function()
Returns properties.
mxEventObject.prototype.getProperty = function(key)
Returns the property for the given key.
mxCircleLayout.prototype.getRadius = function(count,
max)
Returns the radius to be used for the given vertex count.
mxGraphHierarchyNode.prototype.getRankValue = function(layer)
Returns the integer value of the layer that this node resides in
mxGraphView.prototype.getRelativePoint = function(edgeState,
x,
y)
Gets the relative point that describes the given, absolute label position for the given edge state.
mxGraph.prototype.getRemovedCellsForChanges = function(changes)
Returns the cells that have been removed from the model.
mxGraphModel.prototype.getRoot = function(cell)
Returns the root of the model or the topmost parent of the given cell.
mxPrintPreview.prototype.getRoot = function()
Returns the root cell for painting the graph.
mxEditor.prototype.getRootTitle = function ()
Returns the string value of the root cell in mxGraph.model.
getRotatedPoint: function(pt,
cos,
sin,
c)
Rotates the given point by the given cos and sin.
mxPolyline.prototype.getRotation = function()
Returns 0.
mxShape.prototype.getRotation = function()
Returns the rotation from the style.
mxHandle.prototype.getRotation = function()
Returns the rotation defined in the style of the cell.
mxGraphView.prototype.getRoutingCenterX = function (state)
Returns the x-coordinate of the center point for automatic routing.
mxGraphView.prototype.getRoutingCenterY = function (state)
Returns the y-coordinate of the center point for automatic routing.
mxGraphView.prototype.getScale = function()
Returns the scale.
getScaleForPageCount: function(pageCount,
graph,
pageFormat,
border)
Returns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.
getScrollOrigin: function(node)
Returns the top, left corner of the viewrect as an mxPoint.
mxVertexHandler.prototype.getSelectionBounds = function(state)
Returns the mxRectangle that defines the bounds of the selection border.
mxGraph.prototype.getSelectionCell = function()
Returns the first cell from the array of selected mxCells.
mxGraph.prototype.getSelectionCells = function()
Returns the array of selected mxCells.
mxGraph.prototype.getSelectionCellsForChanges = function(changes)
Returns the cells to be selected for the given array of changes.
mxEdgeHandler.prototype.getSelectionColor = function()
Returns mxConstants.EDGE_SELECTION_COLOR.
mxVertexHandler.prototype.getSelectionColor = function()
Returns mxConstants.VERTEX_SELECTION_COLOR.
mxGraph.prototype.getSelectionCount = function()
Returns the number of selected cells.
mxGraph.prototype.getSelectionModel = function()
Returns the mxGraphSelectionModel that contains the selection.
mxEdgeHandler.prototype.getSelectionPoints = function(state)
Returns the list of points that defines the selection stroke.
mxEdgeHandler.prototype.getSelectionStrokeWidth = function()
Returns mxConstants.EDGE_SELECTION_STROKEWIDTH.
mxVertexHandler.prototype.getSelectionStrokeWidth = function()
Returns mxConstants.VERTEX_SELECTION_STROKEWIDTH.
mxCellRenderer.prototype.getShape = function(name)
Returns the shape for the given name from defaultShapes.
mxCellRenderer.prototype.getShapeConstructor = function(state)
Returns the constructor to be used for creating the shape.
mxPolyline.prototype.getShapeRotation = function()
Returns 0.
mxShape.prototype.getShapeRotation = function()
Returns the actual rotation of the shape.
mxText.prototype.getShapeRotation = function()
Returns 0 to avoid using rotation in the canvas via updateTransform.
mxCellRenderer.prototype.getShapesForState = function(state)
Returns the mxShapes for the given cell state in the order in which they should appear in the DOM.
getSizeForString: function(text,
fontSize,
fontFamily,
textWidth)
Returns an mxRectangle with the size (width and height in pixels) of the given string.
mxEdgeHandler.prototype.getSnapToTerminalTolerance = function()
Returns the tolerance for the guides.
getSource: function(evt)
Returns the event’s target or srcElement depending on the browser.
mxMouseEvent.prototype.getSource = function()
Returns the target DOM element using mxEvent.getSource for evt.
mxOutline.prototype.getSourceContainerSize = function()
Returns the size of the source container.
mxConnectionHandler.prototype.getSourcePerimeterPoint = function(state,
next,
me)
Hook to update the icon position(s) based on a mouseOver event.
mxText.prototype.getSpacing = function()
Returns the spacing as an mxPoint.
getSpecialBundle: function(basename,
lan)
Hook for subclassers to return the URL for the special bundle.
mxGraph.prototype.getStartSize = function(swimlane)
Returns the start size of the given swimlane, that is, the width or height of the part that contains the title, depending on the horizontal style.
mxCellMarker.prototype.getState = function(me)
Uses getCell, getStateToMark and intersects to return the mxCellState for the given mxMouseEvent.
mxGraphView.prototype.getState = function(cell,
create)
Returns the mxCellState for the given cell.
mxMouseEvent.prototype.getState = function()
Returns state.
Returns the state for the given touch event.
mxGraphView.prototype.getStates = function()
Returns states.
mxCellMarker.prototype.getStateToMark = function(state)
Returns the mxCellState to be marked for the given mxCellState under the mouse.
mxXmlRequest.prototype.getStatus = function()
Returns the status as a number, eg.
getStencil: function(name)
Returns the mxStencil for the given name.
codec.getStringValue = function(key,
value)
Returns the string for encoding the given value.
mxCell.prototype.getStyle = function()
Returns a string that describes the style.
mxGraphModel.prototype.getStyle = function(cell)
Returns the style of the given mxCell.
getStylename: function(style)
Returns the stylename in a style of the form [(stylename|key=value);] or an empty string if the given style does not contain a stylename.
getStylenames: function(style)
Returns the stylenames in a style of the form [(stylename|key=value);] or an empty array if the given style does not contain any stylenames.
mxGraph.prototype.getStylesheet = function()
Returns the mxStylesheet that defines the style.
mxSvgCanvas2D.prototype.getSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxImageShape.prototype.getSvgScreenOffset = function()
Disables offset in IE9 for crisper image output.
mxShape.prototype.getSvgScreenOffset = function()
Returns 0, or 0.5 if strokewidth % 2 == 1.
mxText.prototype.getSvgScreenOffset = function()
Disables offset in IE9 for crisper image output.
mxGraph.prototype.getSwimlane = function(cell)
Returns the nearest ancestor of the given cell which is a swimlane, or the given cell, if it is itself a swimlane.
mxGraph.prototype.getSwimlaneAt = function (x,
y,
parent)
Returns the bottom-most swimlane that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
mxForm.prototype.getTable = function()
Returns the table that contains this form.
mxConnectionHandler.prototype.getTargetPerimeterPoint = function(state,
me)
Returns the perimeter point for the given target state.
mxEditor.prototype.getTemplate = function (name)
Returns the template for the given name.
mxCell.prototype.getTerminal = function(source)
Returns the source or target terminal.
mxGraphModel.prototype.getTerminal = function(edge,
isSource)
Returns the source or target mxCell of the given edge depending on the value of the boolean parameter.
mxGraph.prototype.getTerminalForPort = function(cell,
source)
Returns the terminal to be used for a given port.
mxGeometry.prototype.getTerminalPoint = function(isSource)
Returns the mxPoint representing the source or target point of this edge.
mxGraphView.prototype.getTerminalPort = function(state,
terminal,
source)
Returns an mxCellState that represents the source or target terminal or port for the given edge.
mxXmlRequest.prototype.getText = function()
Returns the response as a string.
getTextContent: function(node)
Returns the text content of the specified node.
mxShape.prototype.getTextRotation = function()
Returns the rotation for the text label.
mxText.prototype.getTextRotation = function()
Returns the rotation for the text label of the corresponding shape.
mxCellRenderer.prototype.getTextScale = function(state)
Returns the scaling used for the label of the given state
mxEditor.prototype.getTitle = function ()
Returns the string value for the current root of the diagram.
mxConstraintHandler.prototype.getTolerance = function(me)
Returns the tolerance to be used for intersecting connection points.
mxGraph.prototype.getTolerance = function()
Returns tolerance.
mxGraph.prototype.getTooltip = function(state,
node,
x,
y)
Returns the string or DOM node that represents the tooltip for the given state, node and coordinate pair.
mxGraph.prototype.getTooltipForCell = function(cell)
Returns the string or DOM node to be used as the tooltip for the given cell.
mxEdgeSegmentHandler.prototype.getTooltipForNode = function(node)
Returns no tooltips.
mxElbowEdgeHandler.prototype.getTooltipForNode = function(node)
Returns the tooltip for the given node.
mxGraphModel.prototype.getTopmostCells = function(cells)
Returns the topmost cells of the hierarchy in an array that contains no descendants for each mxCell that it contains.
mxHandle.prototype.getTotalRotation = function()
Returns the rotation from the style and the rotation from the direction of the cell.
mxGraphView.prototype.getTranslate = function()
Returns the translate.
mxOutline.prototype.getTranslateForEvent = function(me)
Gets the translate for the given mouse event.
mxGraph.prototype.getTranslateForRoot = function(cell)
Returns the translation to be used if the given cell is the root cell as an mxPoint.
mxEditor.prototype.getUrlImage = function ()
Returns the URL to create the image with.
mxEditor.prototype.getUrlPost = function ()
Returns the URL to post the diagram to.
mxCellMarker.prototype.getValidState = function()
Returns the validState.
mxCell.prototype.getValue = function()
Returns the user object of the cell.
mxGraphModel.prototype.getValue = function(cell)
Returns the user object of the given mxCell using mxCell.getValue.
getValue: function(name)
Returns the value associated with the given name.
getValue: function(array,
key,
defaultValue)
Returns the value for the given key in the given associative array or the given default value if the value is null.
mxDictionary.prototype.getValues = function()
Returns all values as an array.
mxGraphLayout.prototype.getVertexBounds = function(cell)
Returns an mxRectangle that defines the bounds of the given cell or the bounding box if useBoundingBox is true.
mxGraph.prototype.getVerticalAlign = function(state)
Returns the vertical alignment for the given cell state.
mxGraph.prototype.getView = function()
Returns the mxGraphView that contains the mxCellStates.
getViewXml: function(graph,
scale,
cells,
x0,
y0)
mxCellState.prototype.getVisibleTerminal = function (source)
Returns the visible source or target terminal cell.
mxGraphView.prototype.getVisibleTerminal = function(edge,
source)
Returns the nearest ancestor terminal that is visible.
mxHierarchicalLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxSwimlaneLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxCellState.prototype.getVisibleTerminalState = function (source)
Returns the visible source or target terminal state.
Returns a VML dash pattern for the current dashPattern.
mxPrintPreview.prototype.getWindow = function()
Returns wnd.
mxGraphAbstractHierarchyCell.prototype.getX = function(layer)
Gets the value of x on the specified layer
mxMouseEvent.prototype.getX = function()
Returns evt.clientX.
mxWindow.prototype.getX = function()
Returns the current position on the x-axis.
getXml: function(node,
linefeed)
Returns the XML content of the specified node.
mxXmlRequest.prototype.getXml = function()
Returns the response as an XML document.
mxMouseEvent.prototype.getY = function()
Returns evt.clientY.
mxWindow.prototype.getY = function()
Returns the current position on the y-axis.
this.gradients
Local cache of gradients for quick lookups.
mxAutoSaveManager.prototype.graph
Reference to the enclosing mxGraph.
mxCellEditor.prototype.graph
Reference to the enclosing mxGraph.
mxCellHighlight.prototype.graph
Reference to the enclosing mxGraph.
mxCellMarker.prototype.graph
Reference to the enclosing mxGraph.
mxCellStatePreview.prototype.graph
Reference to the enclosing mxGraph.
mxConnectionHandler.prototype.graph
Reference to the enclosing mxGraph.
mxConstraintHandler.prototype.graph
Reference to the enclosing mxGraph.
mxEdgeHandler.prototype.graph
Reference to the enclosing mxGraph.
mxEditor.prototype.graph
Holds a mxGraph for displaying the diagram.
mxGraphHandler.prototype.graph
Reference to the enclosing mxGraph.
mxGraphLayout.prototype.graph
Reference to the enclosing mxGraph.
mxGraphSelectionModel.prototype.graph
Reference to the enclosing mxGraph.
mxGraphView.prototype.graph
Reference to the enclosing mxGraph.
mxGuide.prototype.graph
Reference to the enclosing mxGraph instance.
mxKeyHandler.prototype.graph
Reference to the mxGraph associated with this handler.
mxLayoutManager.prototype.graph
Reference to the enclosing mxGraph.
mxMorphing.prototype.graph
Specifies the delay between the animation steps.
mxPanningHandler.prototype.graph
Reference to the enclosing mxGraph.
mxPopupMenuHandler.prototype.graph
Reference to the enclosing mxGraph.
mxPrintPreview.prototype.graph
Reference to the mxGraph that should be previewed.
mxSelectionCellsHandler.prototype.graph
Reference to the enclosing mxGraph.
mxSpaceManager.prototype.graph
Reference to the enclosing mxGraph.
mxSwimlaneManager.prototype.graph
Reference to the enclosing mxGraph.
mxTooltipHandler.prototype.graph
Reference to the enclosing mxGraph.
mxVertexHandler.prototype.graph
Reference to the enclosing mxGraph.
mxGraphView.prototype.graphBounds
mxRectangle that caches the scales, translated bounds of the current view.
mxDragSource.prototype.graphContainsEvent = function(graph,
evt)
Returns true if the given graph contains the given event.
mxAutoSaveManager.prototype.graphModelChanged = function(changes)
Invoked when the graph model has changed.
mxGraph.prototype.graphModelChanged = function(changes)
Called when the graph model changes.
mxEditor.prototype.graphRenderHint
Holds the render hint used for creating the graph in setGraphContainer.
Renderhint to be used for the outline graph.
mxMouseEvent.prototype.graphX
Holds the x-coordinate of the event in the graph.
mxMouseEvent.prototype.graphY
Holds the y-coordinate of the event in the graph.
mxDragSource.prototype.gridEnabled
Specifies if the grid should be allowed.
mxGraph.prototype.gridEnabled
Specifies if the grid is enabled.
mxGraph.prototype.gridSize
Specifies the grid size.
Specifies the event name for groupCells.
Fires between begin- and endUpdate in groupCells.
mxEditor.prototype.groupCells = function ()
Invokes createGroup to create a new group cell and the invokes mxGraph.groupCells, using the grid size of the graph as the spacing in the group’s content area.
mxGraph.prototype.groupCells = function(group,
border,
cells)
Adds the cells into the given group.
mxCompactTreeLayout.prototype.groupPadding
Padding added to resized parents.
mxCoordinateAssignment.prototype.groupPadding
Padding added to resized parents
mxCompactTreeLayout.prototype.groupPaddingBottom
Bottom padding added to resized parents.
mxCompactTreeLayout.prototype.groupPaddingLeft
Left padding added to resized parents.
mxCompactTreeLayout.prototype.groupPaddingRight
Right padding added to resized parents.
mxCompactTreeLayout.prototype.groupPaddingTop
Top padding added to resized parents.
mxRectangle.prototype.grow = function(amount)
Grows the rectangle by the given amount, that is, this method subtracts the given amount from the x- and y-coordinates and adds twice the amount to the width and height.
mxGraphHandler.prototype.guide
Holds the mxGuide instance that is used for alignment.
Defines the color to be used for the guidelines in mxGraphHandler.
Defines the strokewidth to be used for the guidelines in mxGraphHandler.
mxDragSource.prototype.guidesEnabled
Specifies if mxGuide should be enabled.
mxGraphHandler.prototype.guidesEnabled
Specifies if other cells should be used for snapping the right, center or left side of the current selection.
+
mxCell.prototype.geometry
Holds the mxGeometry.
mxGraphModel.prototype.geometryForCellChanged = function(cell,
geometry)
Inner callback to update the mxGeometry of the given mxCell using mxCell.setGeometry and return the previous mxGeometry.
Specifies the event name for gesture.
Fires in fireGestureEvent after a touch gesture.
mxDictionary.prototype.get = function(key)
Returns the value for the given key.
get: function(obj)
Returns the object id for the given object.
get: function(key,
params,
defaultValue)
Returns the value for the specified resource key.
get: function(url,
onload,
onerror)
Loads the specified URL asynchronously and invokes the given functions depending on the request status.
Specifies the event name for get.
getAlignmentAsPoint: function(align,
valign)
Returns an mxPoint that represents the horizontal and vertical alignment for numeric computations.
mxConnectionHandler.prototype.getAlignmentTolerance = function(evt)
Returns the tolerance for aligning new targets to sources.
mxGraph.prototype.getAllConnectionConstraints = function(terminal,
source)
Returns an array of all mxConnectionConstraints for the given terminal.
mxGraph.prototype.getAllEdges = function(cells)
Returns all edges connected to the given cells or its descendants.
Returns the alternate content for the given foreignObject.
mxPrintPreview.prototype.getAppendices = function()
Returns the pages to be added after the print output.
mxShape.prototype.getArcSize = function(w,
h)
Returns the arc size for the given dimension.
mxSwimlane.prototype.getArcSize = function(w,
h,
start)
Returns the arcsize for the swimlane.
mxCell.prototype.getAttribute = function(name,
defaultValue)
Returns the specified attribute from the user object if it is an XML node.
mxObjectCodec.prototype.getAttributeName = function(fieldname)
Returns the attributename for the given fieldname.
mxGraph.prototype.getBackgroundImage = function()
Returns the backgroundImage as an mxImage.
mxGraphView.prototype.getBackgroundPageBounds = function()
Returns the bounds for the background page.
mxGraphView.prototype.getBackgroundPane = function()
Returns the DOM node that represents the background layer.
mxUrlConverter.prototype.getBaseDomain = function()
Returns baseDomain.
mxSvgCanvas2D.prototype.getBaseUrl = function()
Returns the URL of the page without the hash part.
mxUrlConverter.prototype.getBaseUrl = function()
Returns baseUrl.
mxGraph.prototype.getBorder = function()
Returns the value of border.
mxGraph.prototype.getBorderSizes = function()
Returns the size of the border and padding on all four sides of the container.
mxGraphHandler.prototype.getBoundingBox = function(cells)
Returns the mxRectangle that represents the bounding box for the given cells.
mxGraphView.prototype.getBoundingBox = function(state,
recurse)
Returns the bounding box of the shape and the label for the given mxCellState and its children if recurse is true.
getBoundingBox: function(rect,
rotation,
cx)
Returns the bounding box for the rotated rectangle.
mxGraph.prototype.getBoundingBoxFromGeometry = function(cells,
includeEdges)
Returns the bounding box for the geometries of the vertices in the given array of cells.
mxCellOverlay.prototype.getBounds = function(state)
Returns the bounds of the overlay for the given mxCellState as an mxRectangle.
mxGraphView.prototype.getBounds = function(cells)
Returns the bounds (on the screen) for the given array of mxCells.
mxGraph.prototype.getBoundsForGroup = function(group,
children,
border)
Returns the bounds to be used for the given group and children.
mxGraphView.prototype.getCanvas = function()
Returns the DOM node that contains the background-, draw- and overlay- and decoratorpanes.
mxCellMarker.prototype.getCell = function(me)
Returns the mxCell for the given event and cell.
mxGraphModel.prototype.getCell = function(id)
Returns the mxCell for the specified Id or null if no cell can be found for the given Id.
mxMouseEvent.prototype.getCell = function()
Returns the mxCell in state is not null.
mxConnectionHandler.prototype.getCellAt = function(x,
y)
Creates and returns the mxCellMarker used in marker.
mxEdgeHandler.prototype.getCellAt = function(x,
y)
Creates and returns the mxCellMarker used in marker.
mxGraph.prototype.getCellAt = function(x,
y,
parent,
vertices,
edges)
Returns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy starting at the given parent.
mxCellState.prototype.getCellBounds = function ()
Returns the unscaled, untranslated bounds.
mxGraph.prototype.getCellBounds = function(cell,
includeEdges,
includeDescendants)
Returns the scaled, translated bounds for the given cell.
mxGraph.prototype.getCellContainmentArea = function(cell)
Returns the mxRectangle inside which a cell is to be kept.
mxPopupMenuHandler.prototype.getCellForPopupEvent = function(me)
Hook to return the cell for the mouse up popup trigger handling.
mxGraph.prototype.getCellGeometry = function(cell)
Returns the mxGeometry for the given cell.
mxGraph.prototype.getCellOverlays = function(cell)
Returns the array of mxCellOverlays for the given cell or null, if no overlays are defined.
getCells: function()
Returns the cells in the clipboard.
mxGraph.prototype.getCells = function(x,
y,
width,
height,
parent,
result)
Returns the child vertices and edges of the given parent that are contained in the given rectangle.
mxGraphHandler.prototype.getCells = function(initialCell)
Returns the cells to be modified by this handler.
mxGraph.prototype.getCellsBeyond = function(x0,
y0,
parent,
rightHalfpane,
bottomHalfpane)
Returns the children of the given parent that are contained in the halfpane from the given point (x0, y0) rightwards and/or downwards depending on rightHalfpane and bottomHalfpane.
mxLayoutManager.prototype.getCellsForChange = function(change)
Executes all layouts which have been scheduled during the changes.
Returns the cells to be layouted for the given sequence of changes.
mxGraph.prototype.getCellsForGroup = function(cells)
Returns the cells with the same parent as the first cell in the given array.
mxGraphView.prototype.getCellStates = function(cells)
Returns the mxCellStates for the given array of mxCells.
mxSpaceManager.prototype.getCellsToShift = function(state)
Returns the cells to shift after a resize of the specified mxCellState.
mxGraph.prototype.getCellStyle = function(cell)
Returns an array of key, value pairs representing the cell style for the given cell.
mxStylesheet.prototype.getCellStyle = function(name,
defaultStyle)
Returns the cell style for the specified stylename or the given defaultStyle if no style can be found for the given stylename.
mxGraph.prototype.getCellValidationError = function(cell)
Checks all multiplicities that cannot be enforced while the graph is being modified, namely, all multiplicities that require a minimum of 1 edge.
mxRectangle.prototype.getCenterX = function ()
Returns the x-coordinate of the center point.
mxRectangle.prototype.getCenterY = function ()
Returns the y-coordinate of the center point.
mxCell.prototype.getChildAt = function(index)
Returns the child at the specified index.
mxGraphModel.prototype.getChildAt = function(cell,
index)
Returns the child of the given mxCell at the given index.
mxGraph.prototype.getChildCells = function(parent,
vertices,
edges)
Returns the visible child vertices or edges in the given parent.
mxGraphModel.prototype.getChildCells = function(parent,
vertices,
edges)
Returns the children of the given cell that are vertices and/or edges depending on the arguments.
mxCell.prototype.getChildCount = function()
Returns the number of child cells.
mxGraphModel.prototype.getChildCount = function(cell)
Returns the number of children in the given cell.
mxGraph.prototype.getChildEdges = function(parent)
Returns the visible child edges of the given parent.
mxGraphModel.prototype.getChildEdges = function(parent)
Returns the child edges of the given parent.
getChildNodes: function(node,
nodeType)
Returns an array of child nodes that are of the given node type.
mxGraph.prototype.getChildOffsetForCell = function(cell)
Returns the offset to be used for the cells inside the given cell.
mxGraphModel.prototype.getChildren = function(cell)
Returns all children of the given mxCell as an array of mxCells.
mxGraph.prototype.getChildVertices = function(parent)
Returns the visible child vertices of the given parent.
mxGraphModel.prototype.getChildVertices = function(parent)
Returns the child vertices of the given parent.
getClientX: function(e)
Returns true if the meta key is pressed for the given event.
getClientY: function(e)
Returns true if the meta key is pressed for the given event.
mxGraph.prototype.getCloneableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
getCodec: function(ctor)
Returns a codec that handles objects that are constructed using the given constructor.
getColor: function(array,
key,
defaultValue)
Returns the color value for the given key in the given associative array or the given default value if the value is null.
mxConnectionHandler.prototype.getConnectImage = function(state)
Hook to return the mxImage used for the connection icon of the given mxCellState.
mxGraph.prototype.getConnectionConstraint = function(edge,
terminal,
source)
Returns an mxConnectionConstraint that describes the given connection point.
mxGraph.prototype.getConnectionPoint = function(vertex,
constraint)
Returns the nearest point in the list of absolute points or the center of the opposite terminal.
mxGraph.prototype.getConnections = function(cell,
parent)
Returns all visible edges connected to the given cell without loops.
mxGraphModel.prototype.getConnections = function(cell)
Returns all edges of the given cell without loops.
mxGraphLayout.prototype.getConstraint = function(key,
cell,
edge,
source)
Returns the constraint for the given key and cell.
mxCellRenderer.prototype.getControlBounds = function(state,
w,
h)
Returns the bounds to be used to draw the control (folding icon) of the given state.
mxGraphHierarchyEdge.prototype.getCoreCell = function()
Gets the first core edge associated with this wrapper
mxGraphHierarchyNode.prototype.getCoreCell = function()
Gets the core vertex associated with this wrapper
mxPrintPreview.prototype.getCoverPages = function()
Returns the pages to be added before the print output.
mxCellEditor.prototype.getCurrentHtmlValue = function()
Returns the current value as HTML to measure the text size.
mxEdgeSegmentHandler.prototype.getCurrentPoints = function()
Returns the current absolute points.
mxGraph.prototype.getCurrentRoot = function()
Returns the current root of the displayed cell hierarchy.
mxSvgCanvas2D.prototype.getCurrentStrokeWidth = function()
Returns the current stroke width (>= 1), ie.
getCurrentStyle: function()
Returns the current style of the specified element.
mxCellEditor.prototype.getCurrentValue = function()
Returns the current editing value.
mxShape.prototype.getCursor = function()
Returns the current cursor.
mxElbowEdgeHandler.prototype.getCursorForBend = function()
Returns the cursor to be used for the bend.
mxGraph.prototype.getCursorForCell = function(cell)
Returns the cursor value to be used for the CSS of the shape for the given cell.
mxGraph.prototype.getCursorForMouseEvent = function(me)
Returns the cursor value to be used for the CSS of the shape for the given event.
mxGraphView.prototype.getDecoratorPane = function()
Returns the DOM node that represents the topmost drawing layer.
getDefaultBundle: function(basename,
lan)
Hook for subclassers to return the URL for the special bundle.
mxStylesheet.prototype.getDefaultEdgeStyle = function()
Sets the default style for edges.
mxGraph.prototype.getDefaultParent = function()
Returns defaultParent or mxGraphView.currentRoot or the first child child of mxGraphModel.root if both are null.
mxStylesheet.prototype.getDefaultVertexStyle = function()
Returns the default style for vertices.
mxGraph.prototype.getDeletableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
mxGraphHandler.prototype.getDelta = function(me)
Returns an mxPoint that represents the vector for moving the cells for the given mxMouseEvent.
mxMorphing.prototype.getDelta = function(state)
Returns the vector between the current rendered state and the future location of the state after the display will be updated.
mxGraphModel.prototype.getDescendants = function(parent)
Returns all descendants of the given cell and the cell itself in an array.
mxGraphModel.prototype.getDirectedEdgeCount = function(cell,
outgoing,
ignoredEdge)
Returns the number of incoming or outgoing edges, ignoring the given edge.
Returns the string that should go before the HTML tag in the print preview page.
mxXmlRequest.prototype.getDocumentElement = function()
Returns the document element of the response XML document.
mxDivResizer.prototype.getDocumentHeight = function()
Hook for subclassers to return the height of the document (without scrollbars).
getDocumentScrollOrigin: function(doc)
Returns the scroll origin of the given document or the current document if no document is given.
mxDivResizer.prototype.getDocumentWidth = function()
Hook for subclassers to return the width of the document (without scrollbars).
mxGraphView.prototype.getDrawPane = function()
Returns the DOM node that represents the main drawing layer.
mxDragSource.prototype.getDropTarget = function(graph,
x,
y,
evt)
Returns the drop target for the given graph and coordinates.
mxGraph.prototype.getDropTarget = function(cells,
evt,
cell,
clone)
Returns the given cell if it is a drop target for the given cells or the nearest ancestor that may be used as a drop target for the given cells.
mxCell.prototype.getEdgeAt = function(index)
Returns the edge at the specified index in edges.
mxGraphModel.prototype.getEdgeAt = function(cell,
index)
Returns the edge of cell at the given index.
mxConnectionHandler.prototype.getEdgeColor = function(valid)
Returns the color used to draw the preview edge.
mxCell.prototype.getEdgeCount = function()
Returns the number of edges in the edge array.
mxGraphModel.prototype.getEdgeCount = function(cell)
Returns the number of distinct edges connected to the given cell.
mxParallelEdgeLayout.prototype.getEdgeId = function(edge)
Returns a unique ID for the given edge.
mxCell.prototype.getEdgeIndex = function(edge)
Returns the index of the specified edge in edges.
mxGraph.prototype.getEdges = function(cell,
parent,
incoming,
outgoing,
includeLoops,
recurse)
Returns the incoming and/or outgoing edges for the given cell.
mxGraphModel.prototype.getEdges = function(cell,
incoming,
outgoing,
includeLoops)
Returns all distinct edges connected to this cell as a new array of mxCells.
mxHierarchicalLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxSwimlaneLayout.prototype.getEdges = function(cell)
Returns the connected edges for the given cell.
mxGraph.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxGraphModel.prototype.getEdgesBetween = function(source,
target,
directed)
Returns all edges between the given source and target pair.
mxHierarchicalLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxSwimlaneLayout.prototype.getEdgesBetween = function(source,
target,
directed)
Returns the edges between the given source and target.
mxEditor.prototype.getEdgeStyle = function ()
Returns a string identifying the style of new edges.
mxGraphView.prototype.getEdgeStyle = function(edge,
points,
source,
target)
Returns the edge style function to be used to render the given edge state.
mxGraph.prototype.getEdgeValidationError = function(edge,
source,
target)
Returns the validation error message to be displayed when inserting or changing an edges’ connectivity.
mxConnectionHandler.prototype.getEdgeWidth = function(valid)
Returns the width used to draw the preview edge.
mxCellEditor.prototype.getEditingCell = function ()
Returns the cell that is currently being edited or null if no cell is being edited.
mxGraph.prototype.getEditingValue = function(cell,
evt)
Returns the initial value for in-place editing.
mxCellEditor.prototype.getEditorBounds = function(state)
Returns the mxRectangle that defines the bounds of the editor.
mxWindow.prototype.getElement = function()
Returuns the outermost DOM node that makes up the window.
mxCodec.prototype.getElementById = function(id,
attr)
Returns the element with the given ID from document.
mxGraphView.prototype.getEmptyBounds = function()
Returns the bounds for an empty graph.
mxCellEditor.prototype.getEmptyLabelText = function (cell)
Returns the initial label value to be used of the label of the given cell is empty.
mxMouseEvent.prototype.getEvent = function()
Returns evt.
mxEventSource.prototype.getEventSource = function()
Returns eventSource.
mxGraph.prototype.getExportableCells = function(cells)
Returns the cells which may be exported in the given array of cells.
mxObjectCodec.prototype.getFieldName = function(attributename)
Returns the fieldname for the given attributename.
mxObjectCodec.prototype.getFieldTemplate = function(obj,
fieldname,
child)
Returns the template instance for the given field.
mxGraphSelectionModel.prototype.getFirstSelectableCell = function(cells)
Returns the first selectable cell in the given array of cells.
mxGraph.prototype.getFoldableCells = function(cells,
collapse)
Returns the cells which are movable in the given array of cells.
mxGraph.prototype.getFoldingImage = function(state)
Returns the mxImage used to display the collapsed state of the specified cell state.
mxKeyHandler.prototype.getFunction = function(evt)
Returns the function associated with the given key event or null if no function is associated with the given event.
getFunctionName: function(f)
Returns the name for the given function.
mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable = function(
   layer
)
Gets the value of temp for the specified layer
mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable = function(layer)
Gets the value of temp for the specified layer
mxGraphHierarchyNode.prototype.getGeneralPurposeVariable = function(layer)
Gets the value of temp for the specified layer
mxCell.prototype.getGeometry = function()
Returns the mxGeometry that describes the geometry.
mxGraphModel.prototype.getGeometry = function(cell)
Returns the mxGeometry of the given mxCell.
mxShape.prototype.getGradientBounds = function(c,
x,
y,
w,
h)
Returns the bounding box for the gradient box for this shape.
Returns the bounding box for the gradient box for this shape.
mxGraphLayout.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxLayoutManager.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxSpaceManager.prototype.getGraph = function()
Returns the graph that this layout operates on.
mxSwimlaneManager.prototype.getGraph = function()
Returns the graph that this manager operates on.
mxGraph.prototype.getGraphBounds = function()
Returns the bounds of the visible graph.
mxGraphView.prototype.getGraphBounds = function()
Returns graphBounds.
mxDragSource.prototype.getGraphForEvent = function(evt)
Returns the graph for the given mouse event.
mxMouseEvent.prototype.getGraphX = function()
Returns graphX.
mxMouseEvent.prototype.getGraphY = function()
Returns graphY.
mxGraph.prototype.getGridSize = function()
Returns gridSize.
mxGraphHandler.prototype.getGuideStates = function()
Creates an array of cell states which should be used as guides.
mxGuide.prototype.getGuideTolerance = function()
Returns the tolerance for the guides.
mxEdgeHandler.prototype.getHandleFillColor = function(index)
Returns the fillcolor for the handle at the given index.
mxEdgeHandler.prototype.getHandleForEvent = function(me)
Returns the index of the handle for the given event.
mxVertexHandler.prototype.getHandleForEvent = function(me)
Returns the index of the handle for the given event.
mxSelectionCellsHandler.prototype.getHandler = function(cell)
Returns the handler for the given cell.
mxCellMarker.prototype.getHotspot = function()
Returns the hotspot.
mxCell.prototype.getId = function()
Returns the Id of the cell as a string.
mxCodec.prototype.getId = function(obj)
Returns the ID of the specified object.
mxGraph.prototype.getImage = function(state)
Returns the image URL for the given cell state.
mxImageBundle.prototype.getImage = function(key)
Returns the value for the given key.
mxLabel.prototype.getImageBounds = function(x,
y,
w,
h)
Generic background painting implementation.
mxSwimlane.prototype.getImageBounds = function(x,
y,
w,
h)
Paints the swimlane vertex shape.
mxConstraintHandler.prototype.getImageForConstraint = function(state,
constraint,
point)
Returns the tolerance to be used for intersecting connection points.
mxGraph.prototype.getImageFromBundles = function(key)
Searches all imageBundles for the specified key and returns the value for the first match or null if the key is not found.
mxGraph.prototype.getImportableCells = function(cells)
Returns the cells which may be imported in the given array of cells.
mxGraph.prototype.getIncomingEdges = function(cell,
parent)
Returns the visible incoming edges for the given cell.
mxGraphModel.prototype.getIncomingEdges = function(cell)
Returns the incoming edges of the given cell without loops.
mxCell.prototype.getIndex = function(child)
Returns the index of the specified child in the child array.
mxLabel.prototype.getIndicatorBounds = function(x,
y,
w,
h)
Generic background painting implementation.
mxGraph.prototype.getIndicatorColor = function(state)
Returns the indicator color for the given cell state.
mxGraph.prototype.getIndicatorGradientColor = function(state)
Returns the indicator gradient color for the given cell state.
mxGraph.prototype.getIndicatorImage = function(state)
Returns the indicator image for the given cell state.
mxGraph.prototype.getIndicatorShape = function(state)
Returns the indicator shape for the given cell state.
mxGraphHandler.prototype.getInitialCellForEvent = function(me)
Hook to return initial cell for the given event.
mxCellEditor.prototype.getInitialValue = function(state,
trigger)
Gets the initial editing value for the given cell.
getInnerHtml: function()
Returns the inner HTML for the given node as a string or an empty string if no node was specified.
mxDictionary.prototype.getKeys = function()
Returns all keys as an array.
mxGraph.prototype.getLabel = function(cell)
Returns a string or DOM node that represents the label for the given cell.
mxCellRenderer.prototype.getLabelBounds = function(state)
Returns the bounds to be used to draw the label of the given state.
mxDoubleEllipse.prototype.getLabelBounds = function(rect)
Returns the bounds for the label.
mxShape.prototype.getLabelBounds = function(rect)
Returns the mxRectangle for the label bounds of this shape, based on the given scaled and translated bounds of the shape.
mxCellRenderer.prototype.getLabelValue = function(state)
Returns the value to be used for the label.
mxLayoutManager.prototype.getLayout = function(parent)
Returns the layout to be executed for the given graph and parent.
mxImageExport.prototype.getLinkForCellState = function(state,
canvas)
Returns the link for the given cell state and canvas.
getMainEvent: function(e)
Returns the touch or mouse event that contains the mouse coordinates.
Returns the spacing as an mxPoint.
mxCellMarker.prototype.getMarkedState = function()
Returns the markedState.
mxCellMarker.prototype.getMarkerColor = function(evt,
state,
isValid)
Returns the valid- or invalidColor depending on the value of isValid.
mxGraph.prototype.getMaximumGraphBounds = function()
Returns the bounds inside which the diagram should be kept as an mxRectangle.
mxCellEditor.prototype.getMinimumSize = function(state)
Returns the minimum width and height for editing the given state.
mxWindow.prototype.getMinimumSize = function()
Returns an mxRectangle that specifies the size for the minimized window.
mxGraph.prototype.getModel = function()
Returns the mxGraphModel that contains the cells.
mxHierarchicalLayout.prototype.getModel = function()
Returns the internal mxGraphHierarchyModel for this layout algorithm.
mxSwimlaneLayout.prototype.getModel = function()
Returns the internal mxSwimlaneModel for this layout algorithm.
mxGraph.prototype.getMovableCells = function(cells)
Returns the cells which are movable in the given array of cells.
mxEventObject.prototype.getName = function()
Returns name.
mxObjectCodec.prototype.getName = function()
Returns the name used for the nodenames and lookup of the codec when classes are encoded and nodes are decoded.
getName: function(value)
Returns the name for the given value.
mxGraphModel.prototype.getNearestCommonAncestor = function(cell1,
cell2)
Returns the nearest common ancestor for the specified cells.
mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells = function(
   layer
)
Returns the cells this cell connects to on the next layer up
mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer up
mxGraphHierarchyNode.prototype.getNextLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer up
mxGraphView.prototype.getNextPoint = function(edge,
opposite,
source)
Returns the nearest point in the list of absolute points or the center of the opposite terminal.
getNumber: function(array,
key,
defaultValue)
Returns the numeric value for the given key in the given associative array or the given default value (or 0) if the value is null.
mxCodec.prototype.getObject = function(id)
Returns the decoded object for the element with the specified ID in document.
getOffset: function(container,
scrollOffset)
Returns the offset for the specified container as an mxPoint.
mxGraph.prototype.getOpposites = function(edges,
terminal,
sources,
targets)
Returns all distinct visible opposite cells for the specified terminal on the given edges.
mxGraphModel.prototype.getOpposites = function(edges,
terminal,
sources,
targets)
Returns all opposite vertices wrt terminal for the given edges, only returning sources and/or targets as specified.
mxGraphModel.prototype.getOrigin = function(cell)
Returns the absolute, accumulated origin for the children inside the given parent as an mxPoint.
mxMorphing.prototype.getOriginForCell = function(cell)
Returns the top, left corner of the given cell.
getOuterHtml: function()
Returns the outer HTML for the given node as a string or an empty string if no node was specified.
mxGraph.prototype.getOutgoingEdges = function(cell,
parent)
Returns the visible outgoing edges for the given cell.
mxGraphModel.prototype.getOutgoingEdges = function(cell)
Returns the outgoing edges of the given cell without loops.
mxGraph.prototype.getOutlineConstraint = function(point,
terminalState,
me)
Returns the constraint used to connect to the outline of the given state.
mxOutline.prototype.getOutlineOffset = function(scale)
Returns the offset for drawing the outline graph.
mxGraph.prototype.getOverlap = function(cell)
Returns a decimal number representing the amount of the width and height of the given cell that is allowed to overlap its parent.
mxGraphView.prototype.getOverlayPane = function()
Returns the DOM node that represents the layer above the drawing layer.
mxCellState.prototype.getPaintBounds = function ()
Returns the unscaled, untranslated paint bounds.
mxCell.prototype.getParent = function()
Returns the cell’s parent.
mxGraphModel.prototype.getParent = function(cell)
Returns the parent of the given cell.
mxGraphLayout.prototype.getParentOffset = function(parent)
Determines the offset of the given parent to the parent of the layout
getParentPath: function(path)
Returns the path for the parent of the cell represented by the given path.
mxGraphModel.prototype.getParents = function(cells)
Returns an array that represents the set (no duplicates) of all parents for the given array of cells.
mxStackLayout.prototype.getParentSize = function(parent)
Returns the size for the parent container or the size of the graph container if the parent is a layer or the root of the model.
mxCellState.prototype.getPerimeterBounds = function (border,
bounds)
Returns the mxRectangle that should be used as the perimeter of the cell.
mxGraphView.prototype.getPerimeterBounds = function(terminal,
border)
Returns the perimeter bounds for the given terminal, edge pair as an mxRectangle.
mxGraphView.prototype.getPerimeterFunction = function(state)
Returns the perimeter function for the given state.
mxGraphView.prototype.getPerimeterPoint = function(terminal,
next,
orthogonal,
border)
Returns an mxPoint that defines the location of the intersection point between the perimeter and the line between the center of the shape and the given point.
mxGraphView.prototype.getPoint = function(state,
geometry)
Returns the absolute point on the edge for the given relative mxGeometry as an mxPoint.
mxRectangle.prototype.getPoint = function()
Returns the top, left corner as a new mxPoint.
mxEdgeHandler.prototype.getPointForEvent = function(me)
Returns the point for the given event.
mxGraph.prototype.getPointForEvent = function(evt,
addOffset)
Returns an mxPoint representing the given event in the unscaled, non-translated coordinate space of container and applies the grid.
mxHandle.prototype.getPosition = function(bounds)
Hook for subclassers to return the current position of the handle.
mxGraph.prototype.getPreferredPageSize = function(bounds,
width,
height)
Returns the preferred size of the background page if preferPageSize is true.
mxGraph.prototype.getPreferredSizeForCell = function(cell)
Returns the preferred width and height of the given mxCell as an mxRectangle.
Returns a pretty printed string that represents the XML tree for the given node.
mxGraphHandler.prototype.getPreviewBounds = function(cells)
Returns the mxRectangle used as the preview bounds for moving the given cells.
mxEdgeSegmentHandler.prototype.getPreviewPoints = function(point)
Updates the given preview state taking into account the state of the constraint handler.
mxEdgeHandler.prototype.getPreviewPoints = function(pt)
Updates the given preview state taking into account the state of the constraint handler.
mxEdgeHandler.prototype.getPreviewTerminalState = function(me)
Updates the given preview state taking into account the state of the constraint handler.
mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells = function(
   layer
)
Returns the cells this cell connects to on the next layer down
mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer down
mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells = function(layer)
Returns the cells this cell connects to on the next layer down
mxEventObject.prototype.getProperties = function()
Returns properties.
mxEventObject.prototype.getProperty = function(key)
Returns the property for the given key.
mxCircleLayout.prototype.getRadius = function(count,
max)
Returns the radius to be used for the given vertex count.
mxGraphHierarchyNode.prototype.getRankValue = function(layer)
Returns the integer value of the layer that this node resides in
mxGraphView.prototype.getRelativePoint = function(edgeState,
x,
y)
Gets the relative point that describes the given, absolute label position for the given edge state.
mxGraph.prototype.getRemovedCellsForChanges = function(changes)
Returns the cells that have been removed from the model.
mxGraphModel.prototype.getRoot = function(cell)
Returns the root of the model or the topmost parent of the given cell.
mxPrintPreview.prototype.getRoot = function()
Returns the root cell for painting the graph.
mxEditor.prototype.getRootTitle = function ()
Returns the string value of the root cell in mxGraph.model.
getRotatedPoint: function(pt,
cos,
sin,
c)
Rotates the given point by the given cos and sin.
mxPolyline.prototype.getRotation = function()
Returns 0.
mxShape.prototype.getRotation = function()
Returns the rotation from the style.
mxHandle.prototype.getRotation = function()
Returns the rotation defined in the style of the cell.
mxGraphView.prototype.getRoutingCenterX = function (state)
Returns the x-coordinate of the center point for automatic routing.
mxGraphView.prototype.getRoutingCenterY = function (state)
Returns the y-coordinate of the center point for automatic routing.
mxGraphView.prototype.getScale = function()
Returns the scale.
getScaleForPageCount: function(pageCount,
graph,
pageFormat,
border)
Returns the scale to be used for printing the graph with the given bounds across the specifies number of pages with the given format.
getScrollOrigin: function(node)
Returns the top, left corner of the viewrect as an mxPoint.
mxVertexHandler.prototype.getSelectionBounds = function(state)
Returns the mxRectangle that defines the bounds of the selection border.
mxGraph.prototype.getSelectionCell = function()
Returns the first cell from the array of selected mxCells.
mxGraph.prototype.getSelectionCells = function()
Returns the array of selected mxCells.
mxGraph.prototype.getSelectionCellsForChanges = function(changes)
Returns the cells to be selected for the given array of changes.
mxEdgeHandler.prototype.getSelectionColor = function()
Returns mxConstants.EDGE_SELECTION_COLOR.
mxVertexHandler.prototype.getSelectionColor = function()
Returns mxConstants.VERTEX_SELECTION_COLOR.
mxGraph.prototype.getSelectionCount = function()
Returns the number of selected cells.
mxGraph.prototype.getSelectionModel = function()
Returns the mxGraphSelectionModel that contains the selection.
mxEdgeHandler.prototype.getSelectionPoints = function(state)
Returns the list of points that defines the selection stroke.
mxEdgeHandler.prototype.getSelectionStrokeWidth = function()
Returns mxConstants.EDGE_SELECTION_STROKEWIDTH.
mxVertexHandler.prototype.getSelectionStrokeWidth = function()
Returns mxConstants.VERTEX_SELECTION_STROKEWIDTH.
mxCellRenderer.prototype.getShape = function(name)
Returns the shape for the given name from defaultShapes.
mxCellRenderer.prototype.getShapeConstructor = function(state)
Returns the constructor to be used for creating the shape.
mxPolyline.prototype.getShapeRotation = function()
Returns 0.
mxShape.prototype.getShapeRotation = function()
Returns the actual rotation of the shape.
mxText.prototype.getShapeRotation = function()
Returns 0 to avoid using rotation in the canvas via updateTransform.
mxCellRenderer.prototype.getShapesForState = function(state)
Returns the mxShapes for the given cell state in the order in which they should appear in the DOM.
getSizeForString: function(text,
fontSize,
fontFamily,
textWidth)
Returns an mxRectangle with the size (width and height in pixels) of the given string.
mxEdgeHandler.prototype.getSnapToTerminalTolerance = function()
Returns the tolerance for the guides.
getSource: function(evt)
Returns the event’s target or srcElement depending on the browser.
mxMouseEvent.prototype.getSource = function()
Returns the target DOM element using mxEvent.getSource for evt.
mxOutline.prototype.getSourceContainerSize = function()
Returns the size of the source container.
mxConnectionHandler.prototype.getSourcePerimeterPoint = function(state,
next,
me)
Hook to update the icon position(s) based on a mouseOver event.
mxText.prototype.getSpacing = function()
Returns the spacing as an mxPoint.
getSpecialBundle: function(basename,
lan)
Hook for subclassers to return the URL for the special bundle.
mxGraph.prototype.getStartSize = function(swimlane)
Returns the start size of the given swimlane, that is, the width or height of the part that contains the title, depending on the horizontal style.
mxCellMarker.prototype.getState = function(me)
Uses getCell, getStateToMark and intersects to return the mxCellState for the given mxMouseEvent.
mxGraphView.prototype.getState = function(cell,
create)
Returns the mxCellState for the given cell.
mxMouseEvent.prototype.getState = function()
Returns state.
Returns the state for the given touch event.
mxGraphView.prototype.getStates = function()
Returns states.
mxCellMarker.prototype.getStateToMark = function(state)
Returns the mxCellState to be marked for the given mxCellState under the mouse.
mxXmlRequest.prototype.getStatus = function()
Returns the status as a number, eg.
getStencil: function(name)
Returns the mxStencil for the given name.
codec.getStringValue = function(key,
value)
Returns the string for encoding the given value.
mxCell.prototype.getStyle = function()
Returns a string that describes the style.
mxGraphModel.prototype.getStyle = function(cell)
Returns the style of the given mxCell.
getStylename: function(style)
Returns the stylename in a style of the form [(stylename|key=value);] or an empty string if the given style does not contain a stylename.
getStylenames: function(style)
Returns the stylenames in a style of the form [(stylename|key=value);] or an empty array if the given style does not contain any stylenames.
mxGraph.prototype.getStylesheet = function()
Returns the mxStylesheet that defines the style.
mxSvgCanvas2D.prototype.getSvgGradient = function(start,
end,
alpha1,
alpha2,
direction)
Private helper function to create SVG elements
mxImageShape.prototype.getSvgScreenOffset = function()
Disables offset in IE9 for crisper image output.
mxShape.prototype.getSvgScreenOffset = function()
Returns 0, or 0.5 if strokewidth % 2 == 1.
mxText.prototype.getSvgScreenOffset = function()
Disables offset in IE9 for crisper image output.
mxGraph.prototype.getSwimlane = function(cell)
Returns the nearest ancestor of the given cell which is a swimlane, or the given cell, if it is itself a swimlane.
mxGraph.prototype.getSwimlaneAt = function (x,
y,
parent)
Returns the bottom-most swimlane that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
mxForm.prototype.getTable = function()
Returns the table that contains this form.
mxConnectionHandler.prototype.getTargetPerimeterPoint = function(state,
me)
Returns the perimeter point for the given target state.
mxEditor.prototype.getTemplate = function (name)
Returns the template for the given name.
mxCell.prototype.getTerminal = function(source)
Returns the source or target terminal.
mxGraphModel.prototype.getTerminal = function(edge,
isSource)
Returns the source or target mxCell of the given edge depending on the value of the boolean parameter.
mxGraph.prototype.getTerminalForPort = function(cell,
source)
Returns the terminal to be used for a given port.
mxGeometry.prototype.getTerminalPoint = function(isSource)
Returns the mxPoint representing the source or target point of this edge.
mxGraphView.prototype.getTerminalPort = function(state,
terminal,
source)
Returns an mxCellState that represents the source or target terminal or port for the given edge.
mxXmlRequest.prototype.getText = function()
Returns the response as a string.
getTextContent: function(node)
Returns the text content of the specified node.
mxShape.prototype.getTextRotation = function()
Returns the rotation for the text label.
mxText.prototype.getTextRotation = function()
Returns the rotation for the text label of the corresponding shape.
mxCellRenderer.prototype.getTextScale = function(state)
Returns the scaling used for the label of the given state
mxEditor.prototype.getTitle = function ()
Returns the string value for the current root of the diagram.
mxConstraintHandler.prototype.getTolerance = function(me)
Returns the tolerance to be used for intersecting connection points.
mxGraph.prototype.getTolerance = function()
Returns tolerance.
mxGraph.prototype.getTooltip = function(state,
node,
x,
y)
Returns the string or DOM node that represents the tooltip for the given state, node and coordinate pair.
mxGraph.prototype.getTooltipForCell = function(cell)
Returns the string or DOM node to be used as the tooltip for the given cell.
mxEdgeSegmentHandler.prototype.getTooltipForNode = function(node)
Returns no tooltips.
mxElbowEdgeHandler.prototype.getTooltipForNode = function(node)
Returns the tooltip for the given node.
mxGraphModel.prototype.getTopmostCells = function(cells)
Returns the topmost cells of the hierarchy in an array that contains no descendants for each mxCell that it contains.
mxHandle.prototype.getTotalRotation = function()
Returns the rotation from the style and the rotation from the direction of the cell.
mxGraphView.prototype.getTranslate = function()
Returns the translate.
mxOutline.prototype.getTranslateForEvent = function(me)
Gets the translate for the given mouse event.
mxGraph.prototype.getTranslateForRoot = function(cell)
Returns the translation to be used if the given cell is the root cell as an mxPoint.
mxEditor.prototype.getUrlImage = function ()
Returns the URL to create the image with.
mxEditor.prototype.getUrlPost = function ()
Returns the URL to post the diagram to.
mxCellMarker.prototype.getValidState = function()
Returns the validState.
mxCell.prototype.getValue = function()
Returns the user object of the cell.
mxGraphModel.prototype.getValue = function(cell)
Returns the user object of the given mxCell using mxCell.getValue.
getValue: function(name)
Returns the value associated with the given name.
getValue: function(array,
key,
defaultValue)
Returns the value for the given key in the given associative array or the given default value if the value is null.
mxDictionary.prototype.getValues = function()
Returns all values as an array.
mxGraphLayout.prototype.getVertexBounds = function(cell)
Returns an mxRectangle that defines the bounds of the given cell or the bounding box if useBoundingBox is true.
mxGraph.prototype.getVerticalAlign = function(state)
Returns the vertical alignment for the given cell state.
mxGraph.prototype.getView = function()
Returns the mxGraphView that contains the mxCellStates.
getViewXml: function(graph,
scale,
cells,
x0,
y0)
mxCellState.prototype.getVisibleTerminal = function (source)
Returns the visible source or target terminal cell.
mxGraphView.prototype.getVisibleTerminal = function(edge,
source)
Returns the nearest ancestor terminal that is visible.
mxHierarchicalLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxSwimlaneLayout.prototype.getVisibleTerminal = function(edge,
source)
Helper function to return visible terminal for edge allowing for ports
mxCellState.prototype.getVisibleTerminalState = function (source)
Returns the visible source or target terminal state.
Returns a VML dash pattern for the current dashPattern.
mxPrintPreview.prototype.getWindow = function()
Returns wnd.
mxGraphAbstractHierarchyCell.prototype.getX = function(layer)
Gets the value of x on the specified layer
mxMouseEvent.prototype.getX = function()
Returns evt.clientX.
mxWindow.prototype.getX = function()
Returns the current position on the x-axis.
getXml: function(node,
linefeed)
Returns the XML content of the specified node.
mxXmlRequest.prototype.getXml = function()
Returns the response as an XML document.
mxMouseEvent.prototype.getY = function()
Returns evt.clientY.
mxWindow.prototype.getY = function()
Returns the current position on the y-axis.
this.gradients
Local cache of gradients for quick lookups.
mxAutoSaveManager.prototype.graph
Reference to the enclosing mxGraph.
mxCellEditor.prototype.graph
Reference to the enclosing mxGraph.
mxCellHighlight.prototype.graph
Reference to the enclosing mxGraph.
mxCellMarker.prototype.graph
Reference to the enclosing mxGraph.
mxCellStatePreview.prototype.graph
Reference to the enclosing mxGraph.
mxConnectionHandler.prototype.graph
Reference to the enclosing mxGraph.
mxConstraintHandler.prototype.graph
Reference to the enclosing mxGraph.
mxEdgeHandler.prototype.graph
Reference to the enclosing mxGraph.
mxEditor.prototype.graph
Holds a mxGraph for displaying the diagram.
mxGraphHandler.prototype.graph
Reference to the enclosing mxGraph.
mxGraphLayout.prototype.graph
Reference to the enclosing mxGraph.
mxGraphSelectionModel.prototype.graph
Reference to the enclosing mxGraph.
mxGraphView.prototype.graph
Reference to the enclosing mxGraph.
mxGuide.prototype.graph
Reference to the enclosing mxGraph instance.
mxKeyHandler.prototype.graph
Reference to the mxGraph associated with this handler.
mxLayoutManager.prototype.graph
Reference to the enclosing mxGraph.
mxMorphing.prototype.graph
Specifies the delay between the animation steps.
mxPanningHandler.prototype.graph
Reference to the enclosing mxGraph.
mxPopupMenuHandler.prototype.graph
Reference to the enclosing mxGraph.
mxPrintPreview.prototype.graph
Reference to the mxGraph that should be previewed.
mxSelectionCellsHandler.prototype.graph
Reference to the enclosing mxGraph.
mxSpaceManager.prototype.graph
Reference to the enclosing mxGraph.
mxSwimlaneManager.prototype.graph
Reference to the enclosing mxGraph.
mxTooltipHandler.prototype.graph
Reference to the enclosing mxGraph.
mxVertexHandler.prototype.graph
Reference to the enclosing mxGraph.
mxGraphView.prototype.graphBounds
mxRectangle that caches the scales, translated bounds of the current view.
mxDragSource.prototype.graphContainsEvent = function(graph,
evt)
Returns true if the given graph contains the given event.
mxAutoSaveManager.prototype.graphModelChanged = function(changes)
Invoked when the graph model has changed.
mxGraph.prototype.graphModelChanged = function(changes)
Called when the graph model changes.
mxEditor.prototype.graphRenderHint
Holds the render hint used for creating the graph in setGraphContainer.
Renderhint to be used for the outline graph.
mxMouseEvent.prototype.graphX
Holds the x-coordinate of the event in the graph.
mxMouseEvent.prototype.graphY
Holds the y-coordinate of the event in the graph.
mxDragSource.prototype.gridEnabled
Specifies if the grid should be allowed.
mxGraph.prototype.gridEnabled
Specifies if the grid is enabled.
mxGraph.prototype.gridSize
Specifies the grid size.
Specifies the event name for groupCells.
Fires between begin- and endUpdate in groupCells.
mxEditor.prototype.groupCells = function ()
Invokes createGroup to create a new group cell and the invokes mxGraph.groupCells, using the grid size of the graph as the spacing in the group’s content area.
mxGraph.prototype.groupCells = function(group,
border,
cells)
Adds the cells into the given group.
mxCompactTreeLayout.prototype.groupPadding
Padding added to resized parents.
mxCoordinateAssignment.prototype.groupPadding
Padding added to resized parents
mxCompactTreeLayout.prototype.groupPaddingBottom
Bottom padding added to resized parents.
mxCompactTreeLayout.prototype.groupPaddingLeft
Left padding added to resized parents.
mxCompactTreeLayout.prototype.groupPaddingRight
Right padding added to resized parents.
mxCompactTreeLayout.prototype.groupPaddingTop
Top padding added to resized parents.
mxRectangle.prototype.grow = function(amount)
Grows the rectangle by the given amount, that is, this method subtracts the given amount from the x- and y-coordinates and adds twice the amount to the width and height.
mxGraphHandler.prototype.guide
Holds the mxGuide instance that is used for alignment.
Defines the color to be used for the guidelines in mxGraphHandler.
Defines the strokewidth to be used for the guidelines in mxGraphHandler.
mxDragSource.prototype.guidesEnabled
Specifies if mxGuide should be enabled.
mxGraphHandler.prototype.guidesEnabled
Specifies if other cells should be used for snapping the right, center or left side of the current selection.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General8.html b/docs/js-api/index/General8.html index 149ee2665..11e607923 100644 --- a/docs/js-api/index/General8.html +++ b/docs/js-api/index/General8.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 h0, mxStencil
 HANDLE_FILLCOLOR, mxConstants
 HANDLE_SIZE, mxConstants
 HANDLE_STROKECOLOR, mxConstants
 handleImage
 handleMouseOut, mxPanningManager
 handler, mxDefaultKeyHandler
 handlers, mxSelectionCellsHandler
 handlingResize, mxDivResizer
 hashCode, mxGraphHierarchyNode
 hasScrollbars, mxUtils
 hasValidState, mxCellMarker
 height
 help, mxEditor
 helpResource, mxEditor
 helpWidth, mxEditor
 helpWindowImage, mxEditor
 HexagonPerimeter, mxPerimeter
 hide
 HIDE
 hideHandles
 hideMenu, mxPopupMenu
 hideOnHover, mxTooltipHandler
 hideProperties, mxEditor
 hideSizers, mxVertexHandler
 hideSubmenu, mxPopupMenu
 hideTooltip, mxTooltipHandler
 HIGHLIGHT_COLOR, mxConstants
 HIGHLIGHT_STROKEWIDTH, mxConstants
 highlightColor, mxConstraintHandler
 highlightDropTargets, mxDragSource
 highlightEnabled, mxGraphHandler
 history, mxUndoManager
 hitsSwimlaneContent, mxGraph
 home, mxGraph
 horizontal
 horizontalFlow, mxEditor
 horizontalLayout, mxCompactTreeLayout
 horizontalOffset, mxVertexHandler
 hotspot, mxCellMarker
 hotspotEnabled, mxCellMarker
 htmlEntities, mxUtils
 htmlLabels, mxGraph
 htmlPreview, mxGraphHandler
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 h0, mxStencil
 HANDLE_FILLCOLOR, mxConstants
 HANDLE_SIZE, mxConstants
 HANDLE_STROKECOLOR, mxConstants
 handleImage
 handleMouseOut, mxPanningManager
 handler, mxDefaultKeyHandler
 handlers, mxSelectionCellsHandler
 handlingResize, mxDivResizer
 hashCode, mxGraphHierarchyNode
 hasScrollbars, mxUtils
 hasValidState, mxCellMarker
 height
 help, mxEditor
 helpResource, mxEditor
 helpWidth, mxEditor
 helpWindowImage, mxEditor
 HexagonPerimeter, mxPerimeter
 hide
 HIDE
 hideHandles
 hideMenu, mxPopupMenu
 hideOnHover, mxTooltipHandler
 hideProperties, mxEditor
 hideSizers, mxVertexHandler
 hideSubmenu, mxPopupMenu
 hideTooltip, mxTooltipHandler
 HIGHLIGHT_COLOR, mxConstants
 HIGHLIGHT_STROKEWIDTH, mxConstants
 highlightColor, mxConstraintHandler
 highlightDropTargets, mxDragSource
 highlightEnabled, mxGraphHandler
 history, mxUndoManager
 hitsSwimlaneContent, mxGraph
 home, mxGraph
 horizontal
 horizontalFlow, mxEditor
 horizontalLayout, mxCompactTreeLayout
 horizontalOffset, mxVertexHandler
 hotspot, mxCellMarker
 hotspotEnabled, mxCellMarker
 htmlEntities, mxUtils
 htmlLabels, mxGraph
 htmlPreview, mxGraphHandler
-
mxStencil.prototype.h0
Holds the height of the shape.
Defines the color to be used for the handle fill color.
Defines the default size for handles.
Defines the color to be used for the handle stroke color.
mxEdgeHandler.prototype.handleImage
Optional mxImage to be used as handles.
mxVertexHandler.prototype.handleImage
Optional mxImage to be used as handles.
mxPanningManager.prototype.handleMouseOut
Specifies if mouse events outside of the component should be handled.
mxDefaultKeyHandler.prototype.handler
Holds the mxKeyHandler for key event handling.
mxSelectionCellsHandler.prototype.handlers
mxDictionary that maps from cells to handlers.
Boolean specifying if the width should be updated.
mxGraphHierarchyNode.prototype.hashCode
Assigns a unique hashcode for each node.
hasScrollbars: function(node)
Returns true if the overflow CSS property of the given node is either scroll or auto.
mxCellMarker.prototype.hasValidState = function()
Returns true if validState is not null.
mxGraphAbstractHierarchyCell.prototype.height
The height of this cell
mxImage.prototype.height
Integer that specifies the height of the image.
mxRectangle.prototype.height
Holds the height of the rectangle.
mxEditor.prototype.help
Holds the mxWindow created in showHelp.
mxEditor.prototype.helpResource
Specifies the resource key for the help window title.
mxEditor.prototype.helpWidth
Specifies the width of the help window in pixels.
mxEditor.prototype.helpWindowImage
Icon for the help window.
HexagonPerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a hexagon perimeter.
mxCellHighlight.prototype.hide = function()
Resets the state of the cell marker.
mxGuide.prototype.hide = function()
Hides all current guides.
mxTooltipHandler.prototype.hide = function()
Hides the tooltip and resets the timer.
mxWindow.prototype.hide = function()
Hides the window.
Specifies the event name for hide.
Fires after the window is hidden.
Shortcut to hideSizers.
Shortcut to hideSizers.
mxPopupMenu.prototype.hideMenu = function()
Removes the menu and all submenus.
mxTooltipHandler.prototype.hideOnHover
Specifies if the tooltip should be hidden if the mouse is moved over the current cell.
mxEditor.prototype.hideProperties = function ()
Hides the properties dialog.
mxVertexHandler.prototype.hideSizers = function()
Hides all sizers except.
mxPopupMenu.prototype.hideSubmenu = function(parent)
Removes all submenus inside the given parent.
mxTooltipHandler.prototype.hideTooltip = function()
Hides the tooltip.
Defines the color to be used for the cell highlighting.
Defines the strokewidth to be used for the highlights.
mxConstraintHandler.prototype.highlightColor
Specifies the color for the highlight.
mxDragSource.prototype.highlightDropTargets
Specifies if drop targets should be highlighted.
mxGraphHandler.prototype.highlightEnabled
Specifies if drop targets under the mouse should be enabled.
mxUndoManager.prototype.history
Array that contains the steps of the command history.
mxGraph.prototype.hitsSwimlaneContent = function(swimlane,
x,
y)
Returns true if the given coordinate pair is inside the content are of the given swimlane.
mxGraph.prototype.home = function()
Uses the root of the model as the root of the displayed cell hierarchy and selects the previous root.
mxCompactTreeLayout.prototype.horizontal
Specifies the orientation of the layout.
mxGuide.prototype.horizontal
Specifies if horizontal guides are enabled.
mxPartitionLayout.prototype.horizontal
Boolean indicating the direction in which the space is partitioned.
mxStackLayout.prototype.horizontal
Specifies the orientation of the layout.
mxSwimlaneManager.prototype.horizontal
Specifies the orientation of the swimlanes.
mxEditor.prototype.horizontalFlow
Specifies the direction of the flow in the diagram.
mxCompactTreeLayout.prototype.horizontalLayout = function(node,
x0,
y0,
bounds)
mxVertexHandler.prototype.horizontalOffset
The horizontal offset for the handles.
mxCellMarker.prototype.hotspot
Specifies the portion of the width and height that should trigger a highlight.
mxCellMarker.prototype.hotspotEnabled
Specifies if the hotspot is enabled.
htmlEntities: function(s,
newline)
Replaces characters (less than, greater than, newlines and quotes) with their HTML entities in the given string and returns the result.
mxGraph.prototype.htmlLabels
Specifies the return value for isHtmlLabel.
mxGraphHandler.prototype.htmlPreview
Specifies if the graph container should be used for preview.
+
mxStencil.prototype.h0
Holds the height of the shape.
Defines the color to be used for the handle fill color.
Defines the default size for handles.
Defines the color to be used for the handle stroke color.
mxEdgeHandler.prototype.handleImage
Optional mxImage to be used as handles.
mxVertexHandler.prototype.handleImage
Optional mxImage to be used as handles.
mxPanningManager.prototype.handleMouseOut
Specifies if mouse events outside of the component should be handled.
mxDefaultKeyHandler.prototype.handler
Holds the mxKeyHandler for key event handling.
mxSelectionCellsHandler.prototype.handlers
mxDictionary that maps from cells to handlers.
Boolean specifying if the width should be updated.
mxGraphHierarchyNode.prototype.hashCode
Assigns a unique hashcode for each node.
hasScrollbars: function(node)
Returns true if the overflow CSS property of the given node is either scroll or auto.
mxCellMarker.prototype.hasValidState = function()
Returns true if validState is not null.
mxGraphAbstractHierarchyCell.prototype.height
The height of this cell
mxImage.prototype.height
Integer that specifies the height of the image.
mxRectangle.prototype.height
Holds the height of the rectangle.
mxEditor.prototype.help
Holds the mxWindow created in showHelp.
mxEditor.prototype.helpResource
Specifies the resource key for the help window title.
mxEditor.prototype.helpWidth
Specifies the width of the help window in pixels.
mxEditor.prototype.helpWindowImage
Icon for the help window.
HexagonPerimeter: function (bounds,
vertex,
next,
orthogonal)
Describes a hexagon perimeter.
mxCellHighlight.prototype.hide = function()
Resets the state of the cell marker.
mxGuide.prototype.hide = function()
Hides all current guides.
mxTooltipHandler.prototype.hide = function()
Hides the tooltip and resets the timer.
mxWindow.prototype.hide = function()
Hides the window.
Specifies the event name for hide.
Fires after the window is hidden.
Shortcut to hideSizers.
Shortcut to hideSizers.
mxPopupMenu.prototype.hideMenu = function()
Removes the menu and all submenus.
mxTooltipHandler.prototype.hideOnHover
Specifies if the tooltip should be hidden if the mouse is moved over the current cell.
mxEditor.prototype.hideProperties = function ()
Hides the properties dialog.
mxVertexHandler.prototype.hideSizers = function()
Hides all sizers except.
mxPopupMenu.prototype.hideSubmenu = function(parent)
Removes all submenus inside the given parent.
mxTooltipHandler.prototype.hideTooltip = function()
Hides the tooltip.
Defines the color to be used for the cell highlighting.
Defines the strokewidth to be used for the highlights.
mxConstraintHandler.prototype.highlightColor
Specifies the color for the highlight.
mxDragSource.prototype.highlightDropTargets
Specifies if drop targets should be highlighted.
mxGraphHandler.prototype.highlightEnabled
Specifies if drop targets under the mouse should be enabled.
mxUndoManager.prototype.history
Array that contains the steps of the command history.
mxGraph.prototype.hitsSwimlaneContent = function(swimlane,
x,
y)
Returns true if the given coordinate pair is inside the content are of the given swimlane.
mxGraph.prototype.home = function()
Uses the root of the model as the root of the displayed cell hierarchy and selects the previous root.
mxCompactTreeLayout.prototype.horizontal
Specifies the orientation of the layout.
mxGuide.prototype.horizontal
Specifies if horizontal guides are enabled.
mxPartitionLayout.prototype.horizontal
Boolean indicating the direction in which the space is partitioned.
mxStackLayout.prototype.horizontal
Specifies the orientation of the layout.
mxSwimlaneManager.prototype.horizontal
Specifies the orientation of the swimlanes.
mxEditor.prototype.horizontalFlow
Specifies the direction of the flow in the diagram.
mxCompactTreeLayout.prototype.horizontalLayout = function(node,
x0,
y0,
bounds)
mxVertexHandler.prototype.horizontalOffset
The horizontal offset for the handles.
mxCellMarker.prototype.hotspot
Specifies the portion of the width and height that should trigger a highlight.
mxCellMarker.prototype.hotspotEnabled
Specifies if the hotspot is enabled.
htmlEntities: function(s,
newline)
Replaces characters (less than, greater than, newlines and quotes) with their HTML entities in the given string and returns the result.
mxGraph.prototype.htmlLabels
Specifies the return value for isHtmlLabel.
mxGraphHandler.prototype.htmlPreview
Specifies if the graph container should be used for preview.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/General9.html b/docs/js-api/index/General9.html index 54f00f244..16dbc8fe8 100644 --- a/docs/js-api/index/General9.html +++ b/docs/js-api/index/General9.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
I
 id
 idrefs, mxObjectCodec
 ids, mxGraphHierarchyEdge
 ignoreCell, mxPanningHandler
 ignoreClippedStringSize, mxText
 ignoredChanges, mxAutoSaveManager
 ignoreMouseDown, mxConnectionHandler
 ignoreScrollbars, mxGraph
 ignoreStringSize, mxText
 ignoreTouchEvents, mxTooltipHandler
 image
 imageBasePath
 imageBundles, mxGraph
 images, mxImageBundle
 imageSize
 importCells, mxGraph
 importEnabled, mxGraph
 importNode, mxUtils
 In-place editing, mxGraph
 include, mxClient
 includeOverlays, mxImageExport
 index, mxVertexHandler
 indexOf, mxUtils
 indexOfNextAdd, mxUndoManager
 indexOfStylename, mxUtils
 indicatorSize, mxLabel
 indicatorSpacing, mxLabel
 indices, mxFastOrganicLayout
 info, mxLog
 init
 initBend, mxEdgeHandler
 initControl, mxCellRenderer
 initialCoords, mxCoordinateAssignment
 initializeLabel, mxCellRenderer
 initializeOverlay, mxCellRenderer
 initializeShape, mxCellRenderer
 initialRank
 initialTemp, mxFastOrganicLayout
 initialTouchX, mxGraph
 initialTouchY, mxGraph
 initialX, mxCoordinateAssignment
 initShape, mxVertexHandler
 insert
 insertBackgroundImage, mxPrintPreview
 insertCount, mxClipboard
 insertEdge
 insertFunction, mxEditor
 insertIntoGraph, mxCodec
 insertStateAfter, mxCellRenderer
 insertVertex, mxGraph
 installChangeHandler, mxEditor
 installCloseHandler, mxWindow
 installDblClickHandler, mxEditor
 installDrillHandler, mxEditor
 installDropHandler, mxDefaultToolbar
 installInsertHandler, mxEditor
 installListeners
 installMaximizeHandler, mxWindow
 installMinimizeHandler, mxWindow
 installMoveHandler, mxWindow
 installOverlayListeners, mxCellRenderer
 installUndoHandler, mxEditor
 interHierarchySpacing
 interRankCellSpacing
 intersection, mxUtils
 intersects
 intraCellSpacing
 invalid, mxCellState
 INVALID_COLOR, mxConstants
 INVALID_CONNECT_TARGET_COLOR, mxConstants
 invalidate, mxGraphView
 invalidColor, mxCellMarker
 invert
 invokesStopCellEditing, mxGraph
 IS_EM, mxClient
 IS_FF, mxClient
 IS_GC, mxClient
 IS_IE, mxClient
 IS_IE11, mxClient
 IS_IE6, mxClient
 IS_IOS, mxClient
 IS_LOCAL, mxClient
 IS_MAC, mxClient
 IS_MT, mxClient
 IS_NS, mxClient
 IS_OP, mxClient
 IS_OT, mxClient
 IS_POINTER, mxClient
 IS_QUIRKS, mxClient
 IS_SF, mxClient
 IS_SVG, mxClient
 IS_TOUCH, mxClient
 IS_VML, mxClient
 IS_WIN, mxClient
 isActive
 isAddEnabled, mxSwimlaneManager
 isAddPointEvent, mxEdgeHandler
 isAllowDanglingEdges, mxGraph
 isAllowEval, mxGraphView
 isAllowLoops, mxGraph
 isAllowOverlapParent, mxGraph
 isAltDown, mxEvent
 isAncestor
 isAncestorNode, mxUtils
 isAutoSizeCell, mxGraph
 isAutoSizeCells, mxGraph
 isBinary, mxXmlRequest
 isBooleanAttribute, mxObjectCodec
 isBrowserSupported, mxClient
 isBubbling, mxLayoutManager
 isCellBendable, mxGraph
 isCellCloneable, mxGraph
 isCellCodec
 isCellCollapsed
 isCellConnectable, mxGraph
 isCellDeletable, mxGraph
 isCellDisconnectable, mxGraph
 isCellEditable, mxGraph
 isCellFoldable, mxGraph
 isCellHorizontal, mxSwimlaneManager
 isCellIgnored, mxSpaceManager
 isCellLocked, mxGraph
 isCellMovable, mxGraph
 isCellResizable, mxGraph
 isCellRotatable, mxGraph
 isCellsBendable, mxGraph
 isCellsCloneable, mxGraph
 isCellsDeletable, mxGraph
 isCellsDisconnectable, mxGraph
 isCellsEditable, mxGraph
 isCellSelectable, mxGraph
 isCellSelected, mxGraph
 isCellShiftable, mxSpaceManager
 isCellsLocked, mxGraph
 isCellsMovable, mxGraph
 isCellsResizable, mxGraph
 isCellsSelectable, mxGraph
 isCellVisible, mxGraph
 isCloneEnabled, mxGraphHandler
 isCloneEvent, mxGraph
 isCloneInvalidEdges, mxGraph
 isCollapsed
 isConnectable
 isConnectableCell
 isConnectableEdges, mxGraph
 isConnecting, mxConnectionHandler
 isConstrainChild, mxGraph
 isConstrainChildren, mxGraph
 isConstrainChildrenOnResize, mxGraph
 isConstrainedEvent
 isConsumed
 isContainerEvent, mxGraphView
 isControlDown
 isCreateIds, mxGraphModel
 isCreateTarget, mxConnectionHandler
 isDelayedSelection, mxGraphHandler
 isDisconnectOnMove, mxGraph
 isDropEnabled, mxGraph
 isEdge
 isEdgeIgnored, mxGraphLayout
 isEdgeLabelsMovable, mxGraph
 isEdgeValid, mxGraph
 isEditing, mxGraph
 isEmpty
 isEnabled
 isEnabledForEvent, mxGuide
 isEnterStopsCellEditing, mxGraph
 isEscapeEnabled, mxGraph
 isEventIgnored
 isEventsEnabled, mxEventSource
 isEventSource, mxCellEditor
 isEventSourceIgnored, mxGraph
 isExcluded
 isExtendParent, mxGraph
 isExtendParents
 isExtendParentsOnAdd, mxGraph
 isForcePanningEvent, mxPanningHandler
 isForceRubberbandEvent, mxRubberband
 isGraphEvent, mxKeyHandler
 isGridEnabled
 isGridEnabledEvent, mxGraph
 isGuidesEnabled, mxDragSource
 isHandleEnabled, mxEdgeHandler
 isHandleVisible, mxEdgeHandler
 isHideLabel, mxCellEditor
 isHideOnHover, mxTooltipHandler
 isHorizontal
 isHotspotEnabled, mxCellMarker
 isHtmlAllowed
 isHtmlLabel, mxGraph
 isHtmlLabels, mxGraph
 isHtmlRequired, mxVertexHandler
 isImmediateConnectSource, mxConnectionHandler
 isInvokesStopCellEditing, mxGraph
 isKeepFocusEvent, mxConstraintHandler
 isLabelClipped, mxGraph
 isLabelEvent, mxCellRenderer
 isLabelMovable, mxGraph
 isLanguageSupported, mxResources
 isLayer, mxGraphModel
 isLeftMouseButton, mxEvent
 isLivePreviewBorder, mxVertexHandler
 isLoop, mxGraph
 isMenuShowing, mxPopupMenu
 isMetaDown, mxEvent
 isMiddleMouseButton, mxEvent
 isModified
 isMouseDown, mxGraph
 isMouseEvent, mxEvent
 isMoveable, mxFastOrganicLayout
 isMoveEnabled, mxGraphHandler
 isMoveIconToFrontForState, mxConnectionHandler
 isMultigraph, mxGraph
 isMultiTouchEvent, mxEvent
 isNaN, mxUtils
 isNode, mxUtils
 isNumeric, mxUtils
 isNumericAttribute, mxObjectCodec
 isOrthogonal, mxGraph
 isOutlineConnectEvent
 isPaintBoundsInverted
 isPanningEnabled, mxPanningHandler
 isPanningTrigger, mxPanningHandler
 isParseVml
 isPinchEnabled, mxPanningHandler
 isPopupTrigger
 isPort
 isPortsEnabled, mxGraph
 isPropertiesVisible, mxEditor
 isReady, mxXmlRequest
 isRecursiveResize, mxGraph
 isReference
 isRelativeUrl, mxUrlConverter
 isRemoveCellsFromParent, mxGraphHandler
 isRemovePointEvent, mxEdgeHandler
 isRendering, mxGraphView
 isResizable, mxWindow
 isResizeContainer, mxGraph
 isResizeEnabled, mxSwimlaneManager
 isReversed, mxGraphHierarchyEdge
 isRightMouseButton, mxEvent
 isRoot, mxGraphModel
 isRotationHandleVisible, mxVertexHandler
 isRunning, mxAnimation
 isScrollEvent, mxGraphView
 isSelected, mxGraphSelectionModel
 isSelectEnabled, mxGraphHandler
 isSelectionDashed
 isSelectionEmpty, mxGraph
 isSelectOnPopup, mxPopupMenuHandler
 isSelectText, mxCellEditor
 isShapeEvent, mxCellRenderer
 isShiftDown, mxEvent
 isShiftDownwards, mxSpaceManager
 isShiftRightwards, mxSpaceManager
 isSignificant, mxUndoableEdit
 isSingleSelection, mxGraphSelectionModel
 isSizerVisible, mxVertexHandler
 isSnapToTerminalsEvent, mxEdgeHandler
 isSource, mxMouseEvent
 isSplitEnabled, mxGraph
 isSplitTarget, mxGraph
 isStartEvent, mxConnectionHandler
 isStateIgnored, mxConstraintHandler
 isStopEditingEvent, mxCellEditor
 isStopEvent, mxConnectionHandler
 isSwimlane, mxGraph
 isSwimlaneIgnored, mxSwimlaneManager
 isSwimlaneNesting, mxGraph
 isSwimlaneSelectionEnabled, mxGraph
 isSyntheticEventIgnored, mxGraph
 isTerminalPointMovable, mxGraph
 isToggleEvent, mxGraph
 isTouchEvent, mxEvent
 isValidAncestor, mxGraph
 isValidConnection, mxGraph
 isValidDropTarget, mxGraph
 isValidRoot, mxGraph
 isValidSource
 isValidState, mxCellMarker
 isValidTarget
 isVertex
 isVertexIgnored
 isVertexLabelsMovable, mxGraph
 isVertexMovable, mxGraphLayout
 isVirtualBendsEnabled, mxEdgeHandler
 isVisible
 isVml, mxUtils
 isWrapping, mxGraph
 itemCount, mxPopupMenu
 iteration, mxFastOrganicLayout
 iterationsWithoutImprovement, mxMedianHybridCrossingReduction
+
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
I
 id
 idrefs, mxObjectCodec
 ids, mxGraphHierarchyEdge
 ignoreCell, mxPanningHandler
 ignoreClippedStringSize, mxText
 ignoredChanges, mxAutoSaveManager
 ignoreMouseDown, mxConnectionHandler
 ignoreScrollbars, mxGraph
 ignoreStringSize, mxText
 ignoreTouchEvents, mxTooltipHandler
 image
 imageBasePath
 imageBundles, mxGraph
 images, mxImageBundle
 imageSize
 importCells, mxGraph
 importEnabled, mxGraph
 importNode, mxUtils
 In-place editing, mxGraph
 include, mxClient
 includeOverlays, mxImageExport
 index, mxVertexHandler
 indexOf, mxUtils
 indexOfNextAdd, mxUndoManager
 indexOfStylename, mxUtils
 indicatorSize, mxLabel
 indicatorSpacing, mxLabel
 indices, mxFastOrganicLayout
 info, mxLog
 init
 initBend, mxEdgeHandler
 initControl, mxCellRenderer
 initialCoords, mxCoordinateAssignment
 initializeLabel, mxCellRenderer
 initializeOverlay, mxCellRenderer
 initializeShape, mxCellRenderer
 initialRank
 initialTemp, mxFastOrganicLayout
 initialTouchX, mxGraph
 initialTouchY, mxGraph
 initialX, mxCoordinateAssignment
 initShape, mxVertexHandler
 insert
 insertBackgroundImage, mxPrintPreview
 insertCount, mxClipboard
 insertEdge
 insertFunction, mxEditor
 insertIntoGraph, mxCodec
 insertStateAfter, mxCellRenderer
 insertVertex, mxGraph
 installChangeHandler, mxEditor
 installCloseHandler, mxWindow
 installDblClickHandler, mxEditor
 installDrillHandler, mxEditor
 installDropHandler, mxDefaultToolbar
 installInsertHandler, mxEditor
 installListeners
 installMaximizeHandler, mxWindow
 installMinimizeHandler, mxWindow
 installMoveHandler, mxWindow
 installOverlayListeners, mxCellRenderer
 installUndoHandler, mxEditor
 interHierarchySpacing
 interRankCellSpacing
 intersection, mxUtils
 intersects
 intraCellSpacing
 invalid, mxCellState
 INVALID_COLOR, mxConstants
 INVALID_CONNECT_TARGET_COLOR, mxConstants
 invalidate, mxGraphView
 invalidColor, mxCellMarker
 invert
 invokesStopCellEditing, mxGraph
 IS_EM, mxClient
 IS_FF, mxClient
 IS_GC, mxClient
 IS_IE, mxClient
 IS_IE11, mxClient
 IS_IE6, mxClient
 IS_IOS, mxClient
 IS_LOCAL, mxClient
 IS_MAC, mxClient
 IS_MT, mxClient
 IS_NS, mxClient
 IS_OP, mxClient
 IS_OT, mxClient
 IS_POINTER, mxClient
 IS_QUIRKS, mxClient
 IS_SF, mxClient
 IS_SVG, mxClient
 IS_TOUCH, mxClient
 IS_VML, mxClient
 IS_WIN, mxClient
 isActive
 isAddEnabled, mxSwimlaneManager
 isAddPointEvent, mxEdgeHandler
 isAllowDanglingEdges, mxGraph
 isAllowEval, mxGraphView
 isAllowLoops, mxGraph
 isAllowOverlapParent, mxGraph
 isAltDown, mxEvent
 isAncestor
 isAncestorNode, mxUtils
 isAutoSizeCell, mxGraph
 isAutoSizeCells, mxGraph
 isBinary, mxXmlRequest
 isBooleanAttribute, mxObjectCodec
 isBrowserSupported, mxClient
 isBubbling, mxLayoutManager
 isCellBendable, mxGraph
 isCellCloneable, mxGraph
 isCellCodec
 isCellCollapsed
 isCellConnectable, mxGraph
 isCellDeletable, mxGraph
 isCellDisconnectable, mxGraph
 isCellEditable, mxGraph
 isCellFoldable, mxGraph
 isCellHorizontal, mxSwimlaneManager
 isCellIgnored, mxSpaceManager
 isCellLocked, mxGraph
 isCellMovable, mxGraph
 isCellResizable, mxGraph
 isCellRotatable, mxGraph
 isCellsBendable, mxGraph
 isCellsCloneable, mxGraph
 isCellsDeletable, mxGraph
 isCellsDisconnectable, mxGraph
 isCellsEditable, mxGraph
 isCellSelectable, mxGraph
 isCellSelected, mxGraph
 isCellShiftable, mxSpaceManager
 isCellsLocked, mxGraph
 isCellsMovable, mxGraph
 isCellsResizable, mxGraph
 isCellsSelectable, mxGraph
 isCellVisible, mxGraph
 isCloneEnabled, mxGraphHandler
 isCloneEvent, mxGraph
 isCloneInvalidEdges, mxGraph
 isCollapsed
 isConnectable
 isConnectableCell
 isConnectableEdges, mxGraph
 isConnecting, mxConnectionHandler
 isConstrainChild, mxGraph
 isConstrainChildren, mxGraph
 isConstrainChildrenOnResize, mxGraph
 isConstrainedEvent
 isConsumed
 isContainerEvent, mxGraphView
 isControlDown
 isCreateIds, mxGraphModel
 isCreateTarget, mxConnectionHandler
 isDelayedSelection, mxGraphHandler
 isDisconnectOnMove, mxGraph
 isDropEnabled, mxGraph
 isEdge
 isEdgeIgnored, mxGraphLayout
 isEdgeLabelsMovable, mxGraph
 isEdgeValid, mxGraph
 isEditing, mxGraph
 isEmpty
 isEnabled
 isEnabledForEvent, mxGuide
 isEnterStopsCellEditing, mxGraph
 isEscapeEnabled, mxGraph
 isEventIgnored
 isEventsEnabled, mxEventSource
 isEventSource, mxCellEditor
 isEventSourceIgnored, mxGraph
 isExcluded
 isExtendParent, mxGraph
 isExtendParents
 isExtendParentsOnAdd, mxGraph
 isForcePanningEvent, mxPanningHandler
 isForceRubberbandEvent, mxRubberband
 isGraphEvent, mxKeyHandler
 isGridEnabled
 isGridEnabledEvent, mxGraph
 isGuidesEnabled, mxDragSource
 isHandleEnabled, mxEdgeHandler
 isHandleVisible, mxEdgeHandler
 isHideLabel, mxCellEditor
 isHideOnHover, mxTooltipHandler
 isHorizontal
 isHotspotEnabled, mxCellMarker
 isHtmlAllowed
 isHtmlLabel, mxGraph
 isHtmlLabels, mxGraph
 isHtmlRequired, mxVertexHandler
 isImmediateConnectSource, mxConnectionHandler
 isInvokesStopCellEditing, mxGraph
 isKeepFocusEvent, mxConstraintHandler
 isLabelClipped, mxGraph
 isLabelEvent, mxCellRenderer
 isLabelMovable, mxGraph
 isLanguageSupported, mxResources
 isLayer, mxGraphModel
 isLeftMouseButton, mxEvent
 isLivePreviewBorder, mxVertexHandler
 isLoop, mxGraph
 isMenuShowing, mxPopupMenu
 isMetaDown, mxEvent
 isMiddleMouseButton, mxEvent
 isModified
 isMouseDown, mxGraph
 isMouseEvent, mxEvent
 isMoveable, mxFastOrganicLayout
 isMoveEnabled, mxGraphHandler
 isMoveIconToFrontForState, mxConnectionHandler
 isMultigraph, mxGraph
 isMultiTouchEvent, mxEvent
 isNaN, mxUtils
 isNode, mxUtils
 isNumeric, mxUtils
 isNumericAttribute, mxObjectCodec
 isOrthogonal, mxGraph
 isOutlineConnectEvent
 isPaintBoundsInverted
 isPanningEnabled, mxPanningHandler
 isPanningTrigger, mxPanningHandler
 isParseVml
 isPinchEnabled, mxPanningHandler
 isPopupTrigger
 isPort
 isPortsEnabled, mxGraph
 isPropertiesVisible, mxEditor
 isReady, mxXmlRequest
 isRecursiveResize, mxGraph
 isReference
 isRelativeUrl, mxUrlConverter
 isRemoveCellsFromParent, mxGraphHandler
 isRemovePointEvent, mxEdgeHandler
 isRendering, mxGraphView
 isResizable, mxWindow
 isResizeContainer, mxGraph
 isResizeEnabled, mxSwimlaneManager
 isReversed, mxGraphHierarchyEdge
 isRightMouseButton, mxEvent
 isRoot, mxGraphModel
 isRotationHandleVisible, mxVertexHandler
 isRunning, mxAnimation
 isScrollEvent, mxGraphView
 isSelected, mxGraphSelectionModel
 isSelectEnabled, mxGraphHandler
 isSelectionDashed
 isSelectionEmpty, mxGraph
 isSelectOnPopup, mxPopupMenuHandler
 isSelectText, mxCellEditor
 isShapeEvent, mxCellRenderer
 isShiftDown, mxEvent
 isShiftDownwards, mxSpaceManager
 isShiftRightwards, mxSpaceManager
 isSignificant, mxUndoableEdit
 isSingleSelection, mxGraphSelectionModel
 isSizerVisible, mxVertexHandler
 isSnapToTerminalsEvent, mxEdgeHandler
 isSource, mxMouseEvent
 isSplitEnabled, mxGraph
 isSplitTarget, mxGraph
 isStartEvent, mxConnectionHandler
 isStateIgnored, mxConstraintHandler
 isStopEditingEvent, mxCellEditor
 isStopEvent, mxConnectionHandler
 isSwimlane, mxGraph
 isSwimlaneIgnored, mxSwimlaneManager
 isSwimlaneNesting, mxGraph
 isSwimlaneSelectionEnabled, mxGraph
 isSyntheticEventIgnored, mxGraph
 isTerminalPointMovable, mxGraph
 isToggleEvent, mxGraph
 isTouchEvent, mxEvent
 isValidAncestor, mxGraph
 isValidConnection, mxGraph
 isValidDropTarget, mxGraph
 isValidRoot, mxGraph
 isValidSource
 isValidState, mxCellMarker
 isValidTarget
 isVertex
 isVertexIgnored
 isVertexLabelsMovable, mxGraph
 isVertexMovable, mxGraphLayout
 isVirtualBendsEnabled, mxEdgeHandler
 isVisible
 isVml, mxUtils
 isWrapping, mxGraph
 itemCount, mxPopupMenu
 iteration, mxFastOrganicLayout
 iterationsWithoutImprovement, mxMedianHybridCrossingReduction
-
mxCell.prototype.id
Holds the Id.
mxGraphHierarchyNode.prototype.id
The object identity of the wrapped cell
mxObjectCodec.prototype.idrefs
Array containing the variable names that should be turned into or converted from references.
mxGraphHierarchyEdge.prototype.ids
The object identities of the wrapped cells
mxPanningHandler.prototype.ignoreCell
Specifies if panning should be active even if there is a cell under the mousepointer.
mxText.prototype.ignoreClippedStringSize
Specifies if the string size should be measured in updateBoundingBox if the label is clipped and the label position is center and middle.
mxAutoSaveManager.prototype.ignoredChanges
Counter for ignored changes in autosave.
mxConnectionHandler.prototype.ignoreMouseDown
Specifies if the connection handler should ignore the state of the mouse button when highlighting the source.
mxGraph.prototype.ignoreScrollbars
Specifies if the graph should automatically scroll regardless of the scrollbars.
mxText.prototype.ignoreStringSize
Specifies if the actual string size should be measured.
mxTooltipHandler.prototype.ignoreTouchEvents
Specifies if touch and pen events should be ignored.
mxCellOverlay.prototype.image
Holds the mxImage to be used as the icon.
mxSvgCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Private helper function to create SVG elements
mxHandle.prototype.image
Specifies the mxImage to be used to render the handle.
mxVmlCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Paints an image.
mxXmlCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Paints an image.
Basepath for all images URLs in the core without trailing slash.
mxDefaultPopupMenu.prototype.imageBasePath
Base path for all icon attributes in the config.
mxGraph.prototype.imageBundles
Holds the list of image bundles.
mxImageBundle.prototype.images
Maps from keys to images.
mxLabel.prototype.imageSize
Default width and height for the image.
mxSwimlane.prototype.imageSize
Default imagewidth and imageheight if an image but no imagewidth and imageheight are defined in the style.
mxGraph.prototype.importCells = function(cells,
dx,
dy,
target,
evt)
Clones and inserts the given cells into the graph using the move method and returns the inserted cells.
mxGraph.prototype.importEnabled
Specifies the return value for canImportCell.
importNode: function(doc,
node,
allChildren)
Cross browser implementation for document.importNode.
include: function(src)
Dynamically adds a script node to the document header.
mxImageExport.prototype.includeOverlays
Specifies if overlays should be included in the export.
mxVertexHandler.prototype.index
Holds the index of the current handle.
indexOf: function(array,
obj)
Returns the index of obj in array or -1 if the array does not contain the given object.
mxUndoManager.prototype.indexOfNextAdd
Index of the element to be added next.
indexOfStylename: function(style,
stylename)
Returns the index of the given stylename in the given style.
mxLabel.prototype.indicatorSize
Default width and height for the indicicator.
mxLabel.prototype.indicatorSpacing
Default spacing between image and indicator.
mxFastOrganicLayout.prototype.indices
Hashtable from cells to local indices.
info: function()
Writes the current navigator information to the console.
mxCellEditor.prototype.init = function ()
Creates the textarea and installs the event listeners.
mxConnectionHandler.prototype.init = function()
Initializes the shapes required for this connection handler.
mxDefaultToolbar.prototype.init
Constructs the toolbar for the given container and installs a listener that updates the mxEditor.insertFunction on editor if an item is selected in the toolbar.
mxEdgeHandler.prototype.init = function()
Initializes the shapes required for this edge handler.
mxGraph.prototype.init = function(container)
Initializes the container and creates the respective datastructures.
mxGraphView.prototype.init = function()
Initializes the graph event dispatch loop for the specified container and invokes create to create the required DOM nodes for the display.
mxLabel.prototype.init = function(container)
Initializes the shape and the indicator.
init: function()
Initializes the DOM node for the console.
mxOutline.prototype.init = function(container)
Initializes the outline inside the given container.
mxPopupMenu.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxPopupMenuHandler.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxShape.prototype.init = function(container)
Initializes the shape by creaing the DOM node using create and adding it into the given container.
mxTooltipHandler.prototype.init = function()
Initializes the DOM nodes required for this tooltip handler.
mxHandle.prototype.init = function()
Creates and initializes the shapes required for this handle.
mxWindow.prototype.init = function(x,
y,
width,
height,
style)
Initializes the DOM tree that represents the window.
mxEdgeHandler.prototype.initBend = function(bend,
dblClick)
Helper method to initialize the given bend.
mxCellRenderer.prototype.initControl = function(state,
control,
handleEvents,
clickHandler)
Initializes the given control and returns the corresponding DOM node.
mxCoordinateAssignment.prototype.initialCoords = function(facade,
model)
Sets up the layout in an initial positioning.
mxCellRenderer.prototype.initializeLabel = function(state)
Initiailzes the label with a suitable container.
mxCellRenderer.prototype.initializeOverlay = function(state,
overlay)
Initializes the given overlay.
mxCellRenderer.prototype.initializeShape = function(state)
Initializes the shape in the given state by calling its init method with the correct container after configuring it using configureShape.
mxGraphHierarchyModel.prototype.initialRank = function()
Basic determination of minimum layer ranking by working from from sources or sinks and working through each node in the relevant edge direction.
mxSwimlaneModel.prototype.initialRank = function()
Basic determination of minimum layer ranking by working from from sources or sinks and working through each node in the relevant edge direction.
mxFastOrganicLayout.prototype.initialTemp
Start value of temperature.
mxGraph.prototype.initialTouchX
Holds the x-coordinate of the intial touch event for tap and hold.
mxGraph.prototype.initialTouchY
Holds the y-coordinate of the intial touch event for tap and hold.
mxCoordinateAssignment.prototype.initialX
The minimum x position node placement starts at
mxHandle.prototype.initShape = function(html)
Initializes shape and sets its cursor.
mxCell.prototype.insert = function(child,
index)
Inserts the specified child into the child array at the specified index and updates the parent reference of the child.
mxDefaultToolbar.prototype.insert = function(vertex,
evt,
target)
Handles a drop by inserting the given vertex into the given parent cell or the default parent if no parent is specified.
mxPrintPreview.prototype.insertBackgroundImage = function(div,
dx,
dy)
Inserts the background image into the given div.
Counts the number of times the clipboard data has been inserted.
mxCell.prototype.insertEdge = function(edge,
isOutgoing)
Inserts the specified edge into the edge array and returns the edge.
mxConnectionHandler.prototype.insertEdge = function(parent,
id,
value,
source,
target,
style)
Creates, inserts and returns the new edge for the given parameters.
mxGraph.prototype.insertEdge = function(parent,
id,
value,
source,
target,
style)
Adds a new edge into the given parent mxCell using value as the user object and the given source and target as the terminals of the new edge.
mxEditor.prototype.insertFunction
Specifies the function to be used for inserting new cells into the graph.
mxCodec.prototype.insertIntoGraph = function(cell)
Inserts the given cell into its parent and terminal cells.
mxCellRenderer.prototype.insertStateAfter = function(state,
node,
htmlNode)
Inserts the given array of mxShapes after the given nodes in the DOM.
mxGraph.prototype.insertVertex = function(parent,
id,
value,
x,
y,
width,
height,
style,
relative)
Adds a new vertex into the given parent mxCell using value as the user object and the given coordinates as the mxGeometry of the new vertex.
mxEditor.prototype.installChangeHandler = function (graph)
Installs the listeners required to automatically validate the graph.
mxWindow.prototype.installCloseHandler = function()
Adds the closeImage as a new image node in closeImg and installs the close event.
mxEditor.prototype.installDblClickHandler = function (graph)
Overrides mxGraph.dblClick to invoke dblClickAction on a cell and reset the selection tool in the toolbar.
mxEditor.prototype.installDrillHandler = function (graph)
Installs listeners for dispatching the root event.
mxDefaultToolbar.prototype.installDropHandler = function (img,
dropHandler)
Makes the given img draggable using the given function for handling a drop event.
mxEditor.prototype.installInsertHandler = function (graph)
Installs the handler for invoking insertFunction if one is defined.
mxCellEditor.prototype.installListeners = function(elt)
Installs listeners for focus, change and standard key event handling.
mxCellRenderer.prototype.installListeners = function(state)
Installs the event listeners for the given cell state.
mxGraphView.prototype.installListeners = function()
Installs the required listeners in the container.
mxWindow.prototype.installMaximizeHandler = function()
Installs the event listeners required for maximizing the window.
mxWindow.prototype.installMinimizeHandler = function()
Installs the event listeners required for minimizing the window.
mxWindow.prototype.installMoveHandler = function()
Installs the event listeners required for moving the window.
Installs the listeners for the given mxCellState, mxCellOverlay and mxShape that represents the overlay.
mxEditor.prototype.installUndoHandler = function (graph)
Adds the undoManager to the graph model and the view.
mxHierarchicalLayout.prototype.interHierarchySpacing
The spacing buffer between unconnected hierarchies.
mxSwimlaneLayout.prototype.interHierarchySpacing
The spacing buffer between unconnected hierarchies.
mxCoordinateAssignment.prototype.interRankCellSpacing
The minimum distance between cells on adjacent ranks.
mxHierarchicalLayout.prototype.interRankCellSpacing
The spacing buffer added between cell on adjacent layers.
mxSwimlaneLayout.prototype.interRankCellSpacing
The spacing buffer added between cell on adjacent layers.
intersection: function (x0,
y0,
x1,
y1,
x2,
y2,
x3,
y3)
Returns the intersection of two lines as an mxPoint.
mxCellMarker.prototype.intersects = function(state,
me)
Returns true if the given coordinate pair intersects the given state.
mxGraph.prototype.intersects = function(state,
x,
y)
Returns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
intersects: function(a,
b)
Returns true if the two rectangles intersect.
mxCoordinateAssignment.prototype.intraCellSpacing
The minimum buffer between cells on the same rank.
mxHierarchicalLayout.prototype.intraCellSpacing
The spacing buffer added between cells on the same layer.
mxSwimlaneLayout.prototype.intraCellSpacing
The spacing buffer added between cells on the same layer.
mxCellState.prototype.invalid
Specifies if the state is invalid.
Defines the color to be used for the coloring invalid connection previews.
Defines the color to be used for highlighting a invalid target cells for a new or changed connections.
mxGraphView.prototype.invalidate = function(cell,
recurse,
includeEdges)
Invalidates the state of the given cell, all its descendants and connected edges.
mxCellMarker.prototype.invalidColor
Holds the invalid marker color.
mxCompactTreeLayout.prototype.invert
Specifies if edge directions should be inverted.
mxGraphHierarchyEdge.prototype.invert = function(layer)
Inverts the direction of this internal edge(s)
mxGraph.prototype.invokesStopCellEditing
If true, when editing is to be stopped by way of selection changing, data in diagram changing or other means stopCellEditing is invoked, and changes are saved.
IS_EM: 'spellcheck' in document.createElement(
   'textarea'
) && document.documentMode
True if the browser is IE11 in enterprise mode (IE8 standards mode).
IS_FF: navigator.userAgent.indexOf('Firefox/') >
True if the current browser is Firefox.
IS_GC: navigator.userAgent.indexOf('Chrome/') >
True if the current browser is Google Chrome.
IS_IE: navigator.userAgent.indexOf('MSIE') >
True if the current browser is Internet Explorer 10 or below.
True if the current browser is Internet Explorer 11.x.
IS_IE6: navigator.userAgent.indexOf('MSIE 6') >
True if the current browser is Internet Explorer 6.x.
Returns true if the user agent is an iPad, iPhone or iPod.
True if the documents location does not start with http:// or https://.
True if the client is a Mac.
True if -moz-transform is available as a CSS style.
IS_NS: navigator.userAgent.indexOf('Mozilla/') >
True if the current browser is Netscape (including Firefox).
IS_OP: navigator.userAgent.indexOf('Opera/') >
True if the current browser is Opera.
True if -o-transform is available as a CSS style.
True if this device supports MS pointer events.
IS_QUIRKS: navigator.userAgent.indexOf('MSIE') >
True if the current browser is Internet Explorer and it is in quirks mode.
IS_SF: navigator.userAgent.indexOf('AppleWebKit/') >
True if the current browser is Safari.
IS_SVG: navigator.userAgent.indexOf('Firefox/') >
True if the browser supports SVG.
True if this device supports touchstart/-move/-end events (Apple iOS, Android, Chromebook and Chrome Browser on touch-enabled devices).
IS_VML: navigator.appName.toUpperCase()
True if the browser supports VML.
True if the client is a Windows.
mxDragSource.prototype.isActive = function()
Returns true if this drag source is active.
mxPanningHandler.prototype.isActive = function()
Returns true if the handler is currently active.
mxSwimlaneManager.prototype.isAddEnabled = function()
Returns addEnabled.
mxEdgeHandler.prototype.isAddPointEvent = function(evt)
Returns true if the given event is a trigger to add a new point.
mxGraph.prototype.isAllowDanglingEdges = function()
Returns allowDanglingEdges as a boolean.
mxGraphView.prototype.isAllowEval = function()
Returns allowEval.
mxGraph.prototype.isAllowLoops = function()
Returns allowLoops as a boolean.
mxGraph.prototype.isAllowOverlapParent = function(cell)
Returns true if the given cell is allowed to be placed outside of the parents area.
isAltDown: function(evt)
Returns true if the alt key is pressed for the given event.
mxGraphHierarchyNode.prototype.isAncestor = function(otherNode)
mxGraphModel.prototype.isAncestor = function(parent,
child)
Returns true if the given parent is an ancestor of the given child.
isAncestorNode: function(ancestor,
child)
Returns true if the given ancestor is an ancestor of the given DOM node in the DOM.
mxGraph.prototype.isAutoSizeCell = function(cell)
Returns true if the size of the given cell should automatically be updated after a change of the label.
mxGraph.prototype.isAutoSizeCells = function()
Returns autoSizeCells.
mxXmlRequest.prototype.isBinary = function()
Returns binary.
mxObjectCodec.prototype.isBooleanAttribute = function(enc,
obj,
name,
value)
Returns true if the given object attribute is a boolean value.
isBrowserSupported: function()
Returns true if the current browser is supported, that is, if mxClient.IS_VML or mxClient.IS_SVG is true.
mxLayoutManager.prototype.isBubbling = function()
Returns true if a layout should bubble, that is, if the parent layout should be executed whenever a cell layout (layout of the children of a cell) has been executed.
mxGraph.prototype.isCellBendable = function(cell)
Returns true if the given cell is bendable.
mxGraph.prototype.isCellCloneable = function(cell)
Returns true if the given cell is cloneable.
codec.isCellCodec = function()
Returns true since this is a cell codec.
mxCodec.prototype.isCellCodec = function(codec)
Returns true if the given codec is a cell codec.
mxGraph.prototype.isCellCollapsed = function(cell)
Returns true if the given cell is collapsed in this graph.
mxGraphView.prototype.isCellCollapsed = function(cell)
Returns true if the children of the given cell should not be visible in the view.
mxGraph.prototype.isCellConnectable = function(cell)
Returns true if the given cell is connectable in this graph.
mxGraph.prototype.isCellDeletable = function(cell)
Returns true if the given cell is moveable.
mxGraph.prototype.isCellDisconnectable = function(cell,
terminal,
source)
Returns true if the given cell is disconnectable from the source or target terminal.
mxGraph.prototype.isCellEditable = function(cell)
Returns true if the given cell is editable.
mxGraph.prototype.isCellFoldable = function(cell,
collapse)
Returns true if the given cell is foldable.
mxSwimlaneManager.prototype.isCellHorizontal = function(cell)
Returns true if the given cell is horizontal.
mxSpaceManager.prototype.isCellIgnored = function(cell)
Sets the graph that the layouts operate on.
mxGraph.prototype.isCellLocked = function(cell)
Returns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
mxGraph.prototype.isCellMovable = function(cell)
Returns true if the given cell is moveable.
mxGraph.prototype.isCellResizable = function(cell)
Returns true if the given cell is resizable.
mxGraph.prototype.isCellRotatable = function(cell)
Returns true if the given cell is rotatable.
mxGraph.prototype.isCellsBendable = function()
Returns cellsBenadable.
mxGraph.prototype.isCellsCloneable = function()
Returns cellsCloneable, that is, if the graph allows cloning of cells by using control-drag.
mxGraph.prototype.isCellsDeletable = function()
Returns cellsDeletable.
mxGraph.prototype.isCellsDisconnectable = function()
Returns cellsDisconnectable.
mxGraph.prototype.isCellsEditable = function()
Returns cellsEditable.
mxGraph.prototype.isCellSelectable = function(cell)
Returns true if the given cell is selectable.
mxGraph.prototype.isCellSelected = function(cell)
Returns true if the given cell is selected.
mxSpaceManager.prototype.isCellShiftable = function(cell)
Sets the graph that the layouts operate on.
mxGraph.prototype.isCellsLocked = function()
Returns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
mxGraph.prototype.isCellsMovable = function()
Returns cellsMovable.
mxGraph.prototype.isCellsResizable = function()
Returns cellsResizable.
mxGraph.prototype.isCellsSelectable = function()
Returns cellsSelectable.
mxGraph.prototype.isCellVisible = function(cell)
Returns true if the given cell is visible in this graph.
mxGraphHandler.prototype.isCloneEnabled = function()
Returns cloneEnabled.
mxGraph.prototype.isCloneEvent = function(evt)
Returns true if the given event is a clone event.
mxGraph.prototype.isCloneInvalidEdges = function()
Returns cloneInvalidEdges as a boolean.
mxCell.prototype.isCollapsed = function()
Returns true if the cell is collapsed.
mxGraphModel.prototype.isCollapsed = function(cell)
Returns true if the given mxCell is collapsed.
mxCell.prototype.isConnectable = function()
Returns true if the cell is connectable.
mxGraph.prototype.isConnectable = function(connectable)
Returns true if the connectionHandler is enabled.
mxGraphModel.prototype.isConnectable = function(cell)
Returns true if the given mxCell is connectable.
mxConnectionHandler.prototype.isConnectableCell = function(cell)
Returns true if the given cell is connectable.
mxEdgeHandler.prototype.isConnectableCell = function(cell)
Returns true if the given cell is connectable.
mxGraph.prototype.isConnectableEdges = function()
Returns connectableEdges as a boolean.
mxConnectionHandler.prototype.isConnecting = function()
Returns true if the source terminal has been clicked and a new connection is currently being previewed.
mxGraph.prototype.isConstrainChild = function(cell)
Returns true if the given cell should be kept inside the bounds of its parent according to the rules defined by getOverlap and isAllowOverlapParent.
mxGraph.prototype.isConstrainChildren = function()
Returns constrainChildren.
mxGraph.prototype.isConstrainChildrenOnResize = function()
Returns constrainChildrenOnResize.
mxGraph.prototype.isConstrainedEvent = function(evt)
Returns true if the given mouse event should be aligned to the grid.
mxVertexHandler.prototype.isConstrainedEvent = function(me)
Returns true if the aspect ratio if the cell should be maintained.
isConsumed: function(evt)
Returns true if the event has been consumed using consume.
mxEventObject.prototype.isConsumed = function()
Returns true if the event has been consumed.
mxMouseEvent.prototype.isConsumed = function()
Returns consumed.
mxGraphView.prototype.isContainerEvent = function(evt)
Returns true if the event origin is one of the drawing panes or containers of the view.
isControlDown: function(evt)
Returns true if the control key is pressed for the given event.
mxKeyHandler.prototype.isControlDown = function(evt)
Returns true if the control key is pressed.
mxGraphModel.prototype.isCreateIds = function()
Returns createIds.
mxConnectionHandler.prototype.isCreateTarget = function()
Returns createTarget.
mxGraphHandler.prototype.isDelayedSelection = function(cell)
Hook to return true for delayed selections.
mxGraph.prototype.isDisconnectOnMove = function()
Returns disconnectOnMove as a boolean.
mxGraph.prototype.isDropEnabled = function()
Returns dropEnabled as a boolean.
mxCell.prototype.isEdge = function()
Returns true if the cell is an edge.
mxGraphAbstractHierarchyCell.prototype.isEdge = function()
Returns whether or not this cell is an edge
mxGraphHierarchyEdge.prototype.isEdge = function()
Returns true.
mxGraphModel.prototype.isEdge = function(cell)
Returns true if the given cell is an edge.
mxGraphLayout.prototype.isEdgeIgnored = function(edge)
Returns a boolean indicating if the given mxCell should be ignored by the algorithm.
mxGraph.prototype.isEdgeLabelsMovable = function()
Returns edgeLabelsMovable.
mxGraph.prototype.isEdgeValid = function(edge,
source,
target)
Checks if the return value of getEdgeValidationError for the given arguments is null.
mxGraph.prototype.isEditing = function(cell)
Returns true if the given cell is currently being edited.
mxCellStatePreview.prototype.isEmpty = function()
Returns true if this contains no entries.
isEmpty: function()
Returns true if the clipboard currently has not data stored.
mxGraphSelectionModel.prototype.isEmpty = function()
Returns true if no cells are currently selected.
mxUndoableEdit.prototype.isEmpty = function()
Returns true if the this edit contains no changes.
mxUndoManager.prototype.isEmpty = function()
Returns true if the history is empty.
mxAutoSaveManager.prototype.isEnabled = function()
Returns true if events are handled.
mxCellMarker.prototype.isEnabled = function()
Returns true if events are handled.
mxConnectionHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxConstraintHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxDragSource.prototype.isEnabled = function()
Returns enabled.
mxGraph.prototype.isEnabled = function()
Returns true if the graph is enabled.
mxGraphHandler.prototype.isEnabled = function()
Returns enabled.
mxKeyHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxLayoutManager.prototype.isEnabled = function()
Returns true if events are handled.
mxOutline.prototype.isEnabled = function()
Returns true if events are handled.
mxPopupMenu.prototype.isEnabled = function()
Returns true if events are handled.
mxRubberband.prototype.isEnabled = function()
Returns true if events are handled.
mxSelectionCellsHandler.prototype.isEnabled = function()
Returns enabled.
mxSpaceManager.prototype.isEnabled = function()
Returns true if events are handled.
mxSwimlaneManager.prototype.isEnabled = function()
Returns true if events are handled.
mxTooltipHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxUrlConverter.prototype.isEnabled = function()
Returns enabled.
mxGuide.prototype.isEnabledForEvent = function(evt)
Returns true if the guide should be enabled for the given native event.
mxGraph.prototype.isEnterStopsCellEditing = function()
Returns enterStopsCellEditing.
mxGraph.prototype.isEscapeEnabled = function()
Returns escapeEnabled.
mxConstraintHandler.prototype.isEventIgnored = function(me,
source)
Returns true if the given mxMouseEvent should be ignored in update.
mxGraph.prototype.isEventIgnored = function(evtName,
me,
sender)
Returns true if the event should be ignored in fireMouseEvent.
mxEventSource.prototype.isEventsEnabled = function()
Returns eventsEnabled.
mxCellEditor.prototype.isEventSource = function(evt)
Returns true if this editor is the source for the given native event.
mxGraph.prototype.isEventSourceIgnored = function(evtName,
me)
Returns true if the event should be ignored in fireMouseEvent.
codec.isExcluded = function(obj,
attr,
value,
isWrite)
Excludes user objects that are XML nodes.
mxObjectCodec.prototype.isExcluded = function(obj,
attr,
value,
write)
Returns true if the given attribute is to be ignored by the codec.
mxGraph.prototype.isExtendParent = function(cell)
Returns true if the parent of the given cell should be extended if the child has been resized so that it overlaps the parent.
mxGraph.prototype.isExtendParents = function()
Returns extendParents.
mxSpaceManager.prototype.isExtendParents = function()
Returns true if events are handled.
mxGraph.prototype.isExtendParentsOnAdd = function()
Returns extendParentsOnAdd.
mxPanningHandler.prototype.isForcePanningEvent = function(me)
Returns true if the given mxMouseEvent should start panning.
mxRubberband.prototype.isForceRubberbandEvent = function(me)
Returns true if the given mxMouseEvent should start rubberband selection.
mxKeyHandler.prototype.isGraphEvent = function(evt)
Returns true if the event should be processed by this handler, that is, if the event source is either the target, one of its direct children, a descendant of the mxGraph.container, or the mxGraph.cellEditor of the graph.
mxDragSource.prototype.isGridEnabled = function()
Returns gridEnabled.
mxGraph.prototype.isGridEnabled = function()
Returns gridEnabled as a boolean.
mxGraph.prototype.isGridEnabledEvent = function(evt)
Returns true if the given mouse event should be aligned to the grid.
mxDragSource.prototype.isGuidesEnabled = function()
Returns guidesEnabled.
mxEdgeHandler.prototype.isHandleEnabled = function(index)
Creates the shape used to display the given bend.
mxEdgeHandler.prototype.isHandleVisible = function(index)
Returns true if the handle at the given index is visible.
mxCellEditor.prototype.isHideLabel = function(state)
Returns true if the label should be hidden while the cell is being edited.
mxTooltipHandler.prototype.isHideOnHover = function()
Returns hideOnHover.
mxCompactTreeLayout.prototype.isHorizontal = function()
Returns horizontal.
mxPartitionLayout.prototype.isHorizontal = function()
Returns horizontal.
mxStackLayout.prototype.isHorizontal = function()
Returns horizontal.
mxSwimlaneManager.prototype.isHorizontal = function()
Returns horizontal.
mxCellMarker.prototype.isHotspotEnabled = function()
Returns true if hotspot is used in intersects.
mxImageShape.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxLabel.prototype.isHtmlAllowed = function()
Returns true for non-rounded, non-rotated shapes with no glass gradient and no indicator shape.
mxRectangleShape.prototype.isHtmlAllowed = function()
Returns true for non-rounded, non-rotated shapes with no glass gradient.
mxShape.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxText.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxGraph.prototype.isHtmlLabel = function(cell)
Returns true if the label must be rendered as HTML markup.
mxGraph.prototype.isHtmlLabels = function()
Returns htmlLabels.
mxHandle.prototype.isHtmlRequired = function()
Returns true if this handle should be rendered in HTML.
mxConnectionHandler.prototype.isImmediateConnectSource = function(state)
Returns true if a tap on the given source state should immediately start connecting.
mxGraph.prototype.isInvokesStopCellEditing = function()
Returns invokesStopCellEditing.
mxConstraintHandler.prototype.isKeepFocusEvent = function(me)
Returns true if the current focused state should not be changed for the given event.
mxGraph.prototype.isLabelClipped = function(cell)
Returns true if the overflow portion of labels should be hidden.
mxCellRenderer.prototype.isLabelEvent = function(state,
evt)
Returns true if the event is for the label of the given state.
mxGraph.prototype.isLabelMovable = function(cell)
Returns true if the given edges’s label is moveable.
isLanguageSupported: function(lan)
Hook for subclassers to disable support for a given language.
mxGraphModel.prototype.isLayer = function(cell)
Returns true if isRoot returns true for the parent of the given cell.
isLeftMouseButton: function(evt)
Returns true if the left mouse button is pressed for the given event.
mxVertexHandler.prototype.isLivePreviewBorder = function()
Called if livePreview is enabled to check if a border should be painted.
mxGraph.prototype.isLoop = function(state)
Returns true if the given cell state is a loop.
mxPopupMenu.prototype.isMenuShowing = function()
Returns true if the menu is showing.
isMetaDown: function(evt)
Returns true if the meta key is pressed for the given event.
isMiddleMouseButton: function(evt)
Returns true if the middle mouse button is pressed for the given event.
mxCellEditor.prototype.isModified = function()
Returns modified.
mxEditor.prototype.isModified = function ()
Returns modified.
mxGraph.prototype.isMouseDown
Holds the state of the mouse button.
isMouseEvent: function(evt)
Returns true if the event was generated using a mouse (not a pen or touch device).
mxFastOrganicLayout.prototype.isMoveable
Array of booleans representing the movable states of the vertices.
mxGraphHandler.prototype.isMoveEnabled = function()
Returns moveEnabled.
mxConnectionHandler.prototype.isMoveIconToFrontForState = function(state)
Returns true if the state has a HTML label in the graph’s container, otherwise it returns moveIconFront.
mxGraph.prototype.isMultigraph = function()
Returns multigraph as a boolean.
isMultiTouchEvent: function(evt)
Returns true if the event was generated using a touch device (not a pen or mouse).
isNaN: function(value)
Returns true if the given value is of type number and isNaN returns true.
isNode: function(value,
nodeName,
attributeName,
attributeValue)
Returns true if the given value is an XML node with the node name and if the optional attribute has the specified value.
isNumeric: function(n)
Returns true if the specified value is numeric, that is, if it is not null, not an empty string, not a HEX number and isNaN returns false.
mxObjectCodec.prototype.isNumericAttribute = function(dec,
attr,
obj)
Returns true if the given XML attribute is a numeric value.
mxGraph.prototype.isOrthogonal = function(edge)
Returns true if perimeter points should be computed such that the resulting edge has only horizontal or vertical segments.
mxConnectionHandler.prototype.isOutlineConnectEvent = function(me)
Returns true if outlineConnect is true and the source of the event is the outline shape or shift is pressed.
mxEdgeHandler.prototype.isOutlineConnectEvent = function(me)
Returns true if outlineConnect is true and the source of the event is the outline shape or shift is pressed.
mxPolyline.prototype.isPaintBoundsInverted = function()
Returns false.
mxShape.prototype.isPaintBoundsInverted = function()
Returns true if the bounds should be inverted.
mxText.prototype.isPaintBoundsInverted = function()
Inverts the bounds if mxShape.isBoundsInverted returns true or if the horizontal style is false.
mxPanningHandler.prototype.isPanningEnabled = function()
Returns panningEnabled.
mxPanningHandler.prototype.isPanningTrigger = function(me)
Returns true if the given event is a panning trigger for the optional given cell.
mxShape.prototype.isParseVml = function()
Specifies if any VML should be added via insertAdjacentHtml to the DOM.
mxText.prototype.isParseVml = function()
Text shapes do not contain VML markup and do not need to be parsed.
mxPanningHandler.prototype.isPinchEnabled = function()
Returns pinchEnabled.
isPopupTrigger: function(evt)
Returns true if the event is a popup trigger.
mxMouseEvent.prototype.isPopupTrigger = function()
Returns true if the event is a popup trigger.
mxPopupMenu.prototype.isPopupTrigger = function(me)
Returns true if the given event is a popupmenu trigger for the optional given cell.
mxGraph.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, the cell returned by getTerminalForPort should be used as the terminal and the port should be referenced by the ID in either the mxConstants.STYLE_SOURCE_PORT or the or the mxConstants.STYLE_TARGET_PORT.
mxHierarchicalLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxSwimlaneLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxGraph.prototype.isPortsEnabled = function()
Returns portsEnabled as a boolean.
mxEditor.prototype.isPropertiesVisible = function ()
Returns true if the properties dialog is currently visible.
mxXmlRequest.prototype.isReady = function()
Returns true if the response is ready.
mxGraph.prototype.isRecursiveResize = function(state)
Returns recursiveResize.
codec.isReference = function(obj,
attr,
value,
isWrite)
Returns true for the child attribute if the child cell had a previous parent or if we’re reading the child as an attribute rather than a child node, in which case it’s always a reference.
mxObjectCodec.prototype.isReference = function(obj,
attr,
value,
write)
Returns true if the given fieldname is to be treated as a textual reference (ID).
mxUrlConverter.prototype.isRelativeUrl = function(url)
Returns true if the given URL is relative.
mxGraphHandler.prototype.isRemoveCellsFromParent = function()
Returns removeCellsFromParent.
mxEdgeHandler.prototype.isRemovePointEvent = function(evt)
Returns true if the given event is a trigger to remove a point.
mxGraphView.prototype.isRendering = function()
Returns rendering.
mxWindow.prototype.isResizable = function()
Returns true if the window is resizable.
mxGraph.prototype.isResizeContainer = function()
Returns resizeContainer.
mxSwimlaneManager.prototype.isResizeEnabled = function()
Returns resizeEnabled.
mxGraphHierarchyEdge.prototype.isReversed
Whether or not the direction of this edge has been reversed internally to create a DAG for the hierarchical layout
isRightMouseButton: function(evt)
Returns true if the right mouse button was pressed.
mxGraphModel.prototype.isRoot = function(cell)
Returns true if the given cell is the root of the model and a non-null value.
mxVertexHandler.prototype.isRotationHandleVisible = function()
Returns true if the rotation handle should be showing.
mxAnimation.prototype.isRunning = function()
Returns true if the animation is running.
mxGraphView.prototype.isScrollEvent = function(evt)
Returns true if the event origin is one of the scrollbars of the container in IE.
mxGraphSelectionModel.prototype.isSelected = function(cell)
Returns true if the given mxCell is selected.
mxGraphHandler.prototype.isSelectEnabled = function()
Returns selectEnabled.
mxEdgeHandler.prototype.isSelectionDashed = function()
Returns mxConstants.EDGE_SELECTION_DASHED.
mxVertexHandler.prototype.isSelectionDashed = function()
Returns mxConstants.VERTEX_SELECTION_DASHED.
mxGraph.prototype.isSelectionEmpty = function()
Returns true if the selection is empty.
mxPopupMenuHandler.prototype.isSelectOnPopup = function(me)
Hook for returning if a cell should be selected for a given mxMouseEvent.
mxCellEditor.prototype.isSelectText = function()
Returns selectText.
mxCellRenderer.prototype.isShapeEvent = function(state,
evt)
Returns true if the event is for the shape of the given state.
isShiftDown: function(evt)
Returns true if the shift key is pressed for the given event.
mxSpaceManager.prototype.isShiftDownwards = function()
Returns true if events are handled.
mxSpaceManager.prototype.isShiftRightwards = function()
Returns true if events are handled.
mxUndoableEdit.prototype.isSignificant = function()
Returns significant.
mxGraphSelectionModel.prototype.isSingleSelection = function()
Returns singleSelection as a boolean.
mxVertexHandler.prototype.isSizerVisible = function(index)
Returns true if the sizer for the given index is visible.
mxEdgeHandler.prototype.isSnapToTerminalsEvent = function(me)
Returns true if snapToTerminals is true and if alt is not pressed.
mxMouseEvent.prototype.isSource = function(shape)
Returns true if the given mxShape is the source of evt.
mxGraph.prototype.isSplitEnabled = function()
Returns splitEnabled as a boolean.
mxGraph.prototype.isSplitTarget = function(target,
cells,
evt)
Returns true if the given edge may be splitted into two edges with the given cell as a new terminal between the two.
mxConnectionHandler.prototype.isStartEvent = function(me)
Returns true if the given mouse down event should start this handler.
mxConstraintHandler.prototype.isStateIgnored = function(state,
source)
Returns true if the given state should be ignored.
mxCellEditor.prototype.isStopEditingEvent = function(evt)
Returns true if the given keydown event should stop cell editing.
mxConnectionHandler.prototype.isStopEvent = function(me)
Returns true if the given mouse up event should stop this handler.
mxGraph.prototype.isSwimlane = function (cell)
Returns true if the given cell is a swimlane in the graph.
mxSwimlaneManager.prototype.isSwimlaneIgnored = function(swimlane)
Returns true if the given swimlane should be ignored.
mxGraph.prototype.isSwimlaneNesting = function()
Returns swimlaneNesting as a boolean.
mxGraph.prototype.isSwimlaneSelectionEnabled = function()
Returns swimlaneSelectionEnabled as a boolean.
mxGraph.prototype.isSyntheticEventIgnored = function(evtName,
me,
sender)
Hook for ignoring synthetic mouse events after touchend in Firefox.
mxGraph.prototype.isTerminalPointMovable = function(cell,
source)
Returns true if the given terminal point is movable.
mxGraph.prototype.isToggleEvent = function(evt)
Returns true if the given event is a toggle event.
isTouchEvent: function(evt)
Returns true if the event was generated using a touch device (not a pen or mouse).
mxGraph.prototype.isValidAncestor = function(cell,
parent,
recurse)
Returns whether or not the specified parent is a valid ancestor of the specified cell, either direct or indirectly based on whether ancestor recursion is enabled.
mxGraph.prototype.isValidConnection = function(source,
target)
Returns true if the given target cell is a valid target for source.
mxGraph.prototype.isValidDropTarget = function(cell,
cells,
evt)
Returns true if the given cell is a valid drop target for the specified cells.
mxGraph.prototype.isValidRoot = function(cell)
Returns true if the given cell is a valid root for the cell display hierarchy.
mxConnectionHandler.prototype.isValidSource = function(cell,
me)
Returns mxGraph.isValidSource for the given source terminal.
mxGraph.prototype.isValidSource = function(cell)
Returns true if the given cell is a valid source for new connections.
mxCellMarker.prototype.isValidState = function(state)
Returns true if the given mxCellState is a valid state.
mxConnectionHandler.prototype.isValidTarget = function(cell)
Returns true.
mxGraph.prototype.isValidTarget = function(cell)
Returns isValidSource for the given cell.
mxCell.prototype.isVertex = function()
Returns true if the cell is a vertex.
mxGraphAbstractHierarchyCell.prototype.isVertex = function()
Returns whether or not this cell is a node
mxGraphHierarchyNode.prototype.isVertex = function()
Returns true.
mxGraphModel.prototype.isVertex = function(cell)
Returns true if the given cell is a vertex.
mxCompactTreeLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxFastOrganicLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxGraphLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored by the algorithm.
mxRadialTreeLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxGraph.prototype.isVertexLabelsMovable = function()
Returns vertexLabelsMovable.
mxGraphLayout.prototype.isVertexMovable = function(cell)
Returns a boolean indicating if the given mxCell is movable or bendable by the algorithm.
mxEdgeHandler.prototype.isVirtualBendsEnabled = function(evt)
Returns true if virtual bends should be added.
mxCell.prototype.isVisible = function()
Returns true if the cell is visibile.
mxGraphModel.prototype.isVisible = function(cell)
Returns true if the given mxCell is visible.
isVisible: function()
Returns true if the console is visible.
mxWindow.prototype.isVisible = function()
Returns true if the window is visible.
isVml: function(node)
Returns true if the given node is in the VML namespace.
mxGraph.prototype.isWrapping = function(cell)
This enables wrapping for HTML labels.
mxPopupMenu.prototype.itemCount
Contains the number of times addItem has been called for a new menu.
mxFastOrganicLayout.prototype.iteration
Current iteration count.
mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement
The total number of crossings found in the best configuration so far
+
mxCell.prototype.id
Holds the Id.
mxGraphHierarchyNode.prototype.id
The object identity of the wrapped cell
mxObjectCodec.prototype.idrefs
Array containing the variable names that should be turned into or converted from references.
mxGraphHierarchyEdge.prototype.ids
The object identities of the wrapped cells
mxPanningHandler.prototype.ignoreCell
Specifies if panning should be active even if there is a cell under the mousepointer.
mxText.prototype.ignoreClippedStringSize
Specifies if the string size should be measured in updateBoundingBox if the label is clipped and the label position is center and middle.
mxAutoSaveManager.prototype.ignoredChanges
Counter for ignored changes in autosave.
mxConnectionHandler.prototype.ignoreMouseDown
Specifies if the connection handler should ignore the state of the mouse button when highlighting the source.
mxGraph.prototype.ignoreScrollbars
Specifies if the graph should automatically scroll regardless of the scrollbars.
mxText.prototype.ignoreStringSize
Specifies if the actual string size should be measured.
mxTooltipHandler.prototype.ignoreTouchEvents
Specifies if touch and pen events should be ignored.
mxCellOverlay.prototype.image
Holds the mxImage to be used as the icon.
mxSvgCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Private helper function to create SVG elements
mxHandle.prototype.image
Specifies the mxImage to be used to render the handle.
mxVmlCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Paints an image.
mxXmlCanvas2D.prototype.image = function(x,
y,
w,
h,
src,
aspect,
flipH,
flipV)
Paints an image.
Basepath for all images URLs in the core without trailing slash.
mxDefaultPopupMenu.prototype.imageBasePath
Base path for all icon attributes in the config.
mxGraph.prototype.imageBundles
Holds the list of image bundles.
mxImageBundle.prototype.images
Maps from keys to images.
mxLabel.prototype.imageSize
Default width and height for the image.
mxSwimlane.prototype.imageSize
Default imagewidth and imageheight if an image but no imagewidth and imageheight are defined in the style.
mxGraph.prototype.importCells = function(cells,
dx,
dy,
target,
evt)
Clones and inserts the given cells into the graph using the move method and returns the inserted cells.
mxGraph.prototype.importEnabled
Specifies the return value for canImportCell.
importNode: function(doc,
node,
allChildren)
Cross browser implementation for document.importNode.
include: function(src)
Dynamically adds a script node to the document header.
mxImageExport.prototype.includeOverlays
Specifies if overlays should be included in the export.
mxVertexHandler.prototype.index
Holds the index of the current handle.
indexOf: function(array,
obj)
Returns the index of obj in array or -1 if the array does not contain the given object.
mxUndoManager.prototype.indexOfNextAdd
Index of the element to be added next.
indexOfStylename: function(style,
stylename)
Returns the index of the given stylename in the given style.
mxLabel.prototype.indicatorSize
Default width and height for the indicicator.
mxLabel.prototype.indicatorSpacing
Default spacing between image and indicator.
mxFastOrganicLayout.prototype.indices
Hashtable from cells to local indices.
info: function()
Writes the current navigator information to the console.
mxCellEditor.prototype.init = function ()
Creates the textarea and installs the event listeners.
mxConnectionHandler.prototype.init = function()
Initializes the shapes required for this connection handler.
mxDefaultToolbar.prototype.init
Constructs the toolbar for the given container and installs a listener that updates the mxEditor.insertFunction on editor if an item is selected in the toolbar.
mxEdgeHandler.prototype.init = function()
Initializes the shapes required for this edge handler.
mxGraph.prototype.init = function(container)
Initializes the container and creates the respective datastructures.
mxGraphView.prototype.init = function()
Initializes the graph event dispatch loop for the specified container and invokes create to create the required DOM nodes for the display.
mxLabel.prototype.init = function(container)
Initializes the shape and the indicator.
init: function()
Initializes the DOM node for the console.
mxOutline.prototype.init = function(container)
Initializes the outline inside the given container.
mxPopupMenu.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxPopupMenuHandler.prototype.init = function()
Initializes the shapes required for this vertex handler.
mxShape.prototype.init = function(container)
Initializes the shape by creaing the DOM node using create and adding it into the given container.
mxTooltipHandler.prototype.init = function()
Initializes the DOM nodes required for this tooltip handler.
mxHandle.prototype.init = function()
Creates and initializes the shapes required for this handle.
mxWindow.prototype.init = function(x,
y,
width,
height,
style)
Initializes the DOM tree that represents the window.
mxEdgeHandler.prototype.initBend = function(bend,
dblClick)
Helper method to initialize the given bend.
mxCellRenderer.prototype.initControl = function(state,
control,
handleEvents,
clickHandler)
Initializes the given control and returns the corresponding DOM node.
mxCoordinateAssignment.prototype.initialCoords = function(facade,
model)
Sets up the layout in an initial positioning.
mxCellRenderer.prototype.initializeLabel = function(state)
Initiailzes the label with a suitable container.
mxCellRenderer.prototype.initializeOverlay = function(state,
overlay)
Initializes the given overlay.
mxCellRenderer.prototype.initializeShape = function(state)
Initializes the shape in the given state by calling its init method with the correct container after configuring it using configureShape.
mxGraphHierarchyModel.prototype.initialRank = function()
Basic determination of minimum layer ranking by working from from sources or sinks and working through each node in the relevant edge direction.
mxSwimlaneModel.prototype.initialRank = function()
Basic determination of minimum layer ranking by working from from sources or sinks and working through each node in the relevant edge direction.
mxFastOrganicLayout.prototype.initialTemp
Start value of temperature.
mxGraph.prototype.initialTouchX
Holds the x-coordinate of the intial touch event for tap and hold.
mxGraph.prototype.initialTouchY
Holds the y-coordinate of the intial touch event for tap and hold.
mxCoordinateAssignment.prototype.initialX
The minimum x position node placement starts at
mxHandle.prototype.initShape = function(html)
Initializes shape and sets its cursor.
mxCell.prototype.insert = function(child,
index)
Inserts the specified child into the child array at the specified index and updates the parent reference of the child.
mxDefaultToolbar.prototype.insert = function(vertex,
evt,
target)
Handles a drop by inserting the given vertex into the given parent cell or the default parent if no parent is specified.
mxPrintPreview.prototype.insertBackgroundImage = function(div,
dx,
dy)
Inserts the background image into the given div.
Counts the number of times the clipboard data has been inserted.
mxCell.prototype.insertEdge = function(edge,
isOutgoing)
Inserts the specified edge into the edge array and returns the edge.
mxConnectionHandler.prototype.insertEdge = function(parent,
id,
value,
source,
target,
style)
Creates, inserts and returns the new edge for the given parameters.
mxGraph.prototype.insertEdge = function(parent,
id,
value,
source,
target,
style)
Adds a new edge into the given parent mxCell using value as the user object and the given source and target as the terminals of the new edge.
mxEditor.prototype.insertFunction
Specifies the function to be used for inserting new cells into the graph.
mxCodec.prototype.insertIntoGraph = function(cell)
Inserts the given cell into its parent and terminal cells.
mxCellRenderer.prototype.insertStateAfter = function(state,
node,
htmlNode)
Inserts the given array of mxShapes after the given nodes in the DOM.
mxGraph.prototype.insertVertex = function(parent,
id,
value,
x,
y,
width,
height,
style,
relative)
Adds a new vertex into the given parent mxCell using value as the user object and the given coordinates as the mxGeometry of the new vertex.
mxEditor.prototype.installChangeHandler = function (graph)
Installs the listeners required to automatically validate the graph.
mxWindow.prototype.installCloseHandler = function()
Adds the closeImage as a new image node in closeImg and installs the close event.
mxEditor.prototype.installDblClickHandler = function (graph)
Overrides mxGraph.dblClick to invoke dblClickAction on a cell and reset the selection tool in the toolbar.
mxEditor.prototype.installDrillHandler = function (graph)
Installs listeners for dispatching the root event.
mxDefaultToolbar.prototype.installDropHandler = function (img,
dropHandler)
Makes the given img draggable using the given function for handling a drop event.
mxEditor.prototype.installInsertHandler = function (graph)
Installs the handler for invoking insertFunction if one is defined.
mxCellEditor.prototype.installListeners = function(elt)
Installs listeners for focus, change and standard key event handling.
mxCellRenderer.prototype.installListeners = function(state)
Installs the event listeners for the given cell state.
mxGraphView.prototype.installListeners = function()
Installs the required listeners in the container.
mxWindow.prototype.installMaximizeHandler = function()
Installs the event listeners required for maximizing the window.
mxWindow.prototype.installMinimizeHandler = function()
Installs the event listeners required for minimizing the window.
mxWindow.prototype.installMoveHandler = function()
Installs the event listeners required for moving the window.
Installs the listeners for the given mxCellState, mxCellOverlay and mxShape that represents the overlay.
mxEditor.prototype.installUndoHandler = function (graph)
Adds the undoManager to the graph model and the view.
mxHierarchicalLayout.prototype.interHierarchySpacing
The spacing buffer between unconnected hierarchies.
mxSwimlaneLayout.prototype.interHierarchySpacing
The spacing buffer between unconnected hierarchies.
mxCoordinateAssignment.prototype.interRankCellSpacing
The minimum distance between cells on adjacent ranks.
mxHierarchicalLayout.prototype.interRankCellSpacing
The spacing buffer added between cell on adjacent layers.
mxSwimlaneLayout.prototype.interRankCellSpacing
The spacing buffer added between cell on adjacent layers.
intersection: function (x0,
y0,
x1,
y1,
x2,
y2,
x3,
y3)
Returns the intersection of two lines as an mxPoint.
mxCellMarker.prototype.intersects = function(state,
me)
Returns true if the given coordinate pair intersects the given state.
mxGraph.prototype.intersects = function(state,
x,
y)
Returns the bottom-most cell that intersects the given point (x, y) in the cell hierarchy that starts at the given parent.
intersects: function(a,
b)
Returns true if the two rectangles intersect.
mxCoordinateAssignment.prototype.intraCellSpacing
The minimum buffer between cells on the same rank.
mxHierarchicalLayout.prototype.intraCellSpacing
The spacing buffer added between cells on the same layer.
mxSwimlaneLayout.prototype.intraCellSpacing
The spacing buffer added between cells on the same layer.
mxCellState.prototype.invalid
Specifies if the state is invalid.
Defines the color to be used for the coloring invalid connection previews.
Defines the color to be used for highlighting a invalid target cells for a new or changed connections.
mxGraphView.prototype.invalidate = function(cell,
recurse,
includeEdges)
Invalidates the state of the given cell, all its descendants and connected edges.
mxCellMarker.prototype.invalidColor
Holds the invalid marker color.
mxCompactTreeLayout.prototype.invert
Specifies if edge directions should be inverted.
mxGraphHierarchyEdge.prototype.invert = function(layer)
Inverts the direction of this internal edge(s)
mxGraph.prototype.invokesStopCellEditing
If true, when editing is to be stopped by way of selection changing, data in diagram changing or other means stopCellEditing is invoked, and changes are saved.
IS_EM: 'spellcheck' in document.createElement(
   'textarea'
) && document.documentMode
True if the browser is IE11 in enterprise mode (IE8 standards mode).
IS_FF: navigator.userAgent.indexOf('Firefox/') >
True if the current browser is Firefox.
IS_GC: navigator.userAgent.indexOf('Chrome/') >
True if the current browser is Google Chrome.
IS_IE: navigator.userAgent.indexOf('MSIE') >
True if the current browser is Internet Explorer 10 or below.
True if the current browser is Internet Explorer 11.x.
IS_IE6: navigator.userAgent.indexOf('MSIE 6') >
True if the current browser is Internet Explorer 6.x.
Returns true if the user agent is an iPad, iPhone or iPod.
True if the documents location does not start with http:// or https://.
True if the client is a Mac.
True if -moz-transform is available as a CSS style.
IS_NS: navigator.userAgent.indexOf('Mozilla/') >
True if the current browser is Netscape (including Firefox).
IS_OP: navigator.userAgent.indexOf('Opera/') >
True if the current browser is Opera.
True if -o-transform is available as a CSS style.
True if this device supports MS pointer events.
IS_QUIRKS: navigator.userAgent.indexOf('MSIE') >
True if the current browser is Internet Explorer and it is in quirks mode.
IS_SF: navigator.userAgent.indexOf('AppleWebKit/') >
True if the current browser is Safari.
IS_SVG: navigator.userAgent.indexOf('Firefox/') >
True if the browser supports SVG.
True if this device supports touchstart/-move/-end events (Apple iOS, Android, Chromebook and Chrome Browser on touch-enabled devices).
IS_VML: navigator.appName.toUpperCase()
True if the browser supports VML.
True if the client is a Windows.
mxDragSource.prototype.isActive = function()
Returns true if this drag source is active.
mxPanningHandler.prototype.isActive = function()
Returns true if the handler is currently active.
mxSwimlaneManager.prototype.isAddEnabled = function()
Returns addEnabled.
mxEdgeHandler.prototype.isAddPointEvent = function(evt)
Returns true if the given event is a trigger to add a new point.
mxGraph.prototype.isAllowDanglingEdges = function()
Returns allowDanglingEdges as a boolean.
mxGraphView.prototype.isAllowEval = function()
Returns allowEval.
mxGraph.prototype.isAllowLoops = function()
Returns allowLoops as a boolean.
mxGraph.prototype.isAllowOverlapParent = function(cell)
Returns true if the given cell is allowed to be placed outside of the parents area.
isAltDown: function(evt)
Returns true if the alt key is pressed for the given event.
mxGraphHierarchyNode.prototype.isAncestor = function(otherNode)
mxGraphModel.prototype.isAncestor = function(parent,
child)
Returns true if the given parent is an ancestor of the given child.
isAncestorNode: function(ancestor,
child)
Returns true if the given ancestor is an ancestor of the given DOM node in the DOM.
mxGraph.prototype.isAutoSizeCell = function(cell)
Returns true if the size of the given cell should automatically be updated after a change of the label.
mxGraph.prototype.isAutoSizeCells = function()
Returns autoSizeCells.
mxXmlRequest.prototype.isBinary = function()
Returns binary.
mxObjectCodec.prototype.isBooleanAttribute = function(enc,
obj,
name,
value)
Returns true if the given object attribute is a boolean value.
isBrowserSupported: function()
Returns true if the current browser is supported, that is, if mxClient.IS_VML or mxClient.IS_SVG is true.
mxLayoutManager.prototype.isBubbling = function()
Returns true if a layout should bubble, that is, if the parent layout should be executed whenever a cell layout (layout of the children of a cell) has been executed.
mxGraph.prototype.isCellBendable = function(cell)
Returns true if the given cell is bendable.
mxGraph.prototype.isCellCloneable = function(cell)
Returns true if the given cell is cloneable.
codec.isCellCodec = function()
Returns true since this is a cell codec.
mxCodec.prototype.isCellCodec = function(codec)
Returns true if the given codec is a cell codec.
mxGraph.prototype.isCellCollapsed = function(cell)
Returns true if the given cell is collapsed in this graph.
mxGraphView.prototype.isCellCollapsed = function(cell)
Returns true if the children of the given cell should not be visible in the view.
mxGraph.prototype.isCellConnectable = function(cell)
Returns true if the given cell is connectable in this graph.
mxGraph.prototype.isCellDeletable = function(cell)
Returns true if the given cell is moveable.
mxGraph.prototype.isCellDisconnectable = function(cell,
terminal,
source)
Returns true if the given cell is disconnectable from the source or target terminal.
mxGraph.prototype.isCellEditable = function(cell)
Returns true if the given cell is editable.
mxGraph.prototype.isCellFoldable = function(cell,
collapse)
Returns true if the given cell is foldable.
mxSwimlaneManager.prototype.isCellHorizontal = function(cell)
Returns true if the given cell is horizontal.
mxSpaceManager.prototype.isCellIgnored = function(cell)
Sets the graph that the layouts operate on.
mxGraph.prototype.isCellLocked = function(cell)
Returns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
mxGraph.prototype.isCellMovable = function(cell)
Returns true if the given cell is moveable.
mxGraph.prototype.isCellResizable = function(cell)
Returns true if the given cell is resizable.
mxGraph.prototype.isCellRotatable = function(cell)
Returns true if the given cell is rotatable.
mxGraph.prototype.isCellsBendable = function()
Returns cellsBenadable.
mxGraph.prototype.isCellsCloneable = function()
Returns cellsCloneable, that is, if the graph allows cloning of cells by using control-drag.
mxGraph.prototype.isCellsDeletable = function()
Returns cellsDeletable.
mxGraph.prototype.isCellsDisconnectable = function()
Returns cellsDisconnectable.
mxGraph.prototype.isCellsEditable = function()
Returns cellsEditable.
mxGraph.prototype.isCellSelectable = function(cell)
Returns true if the given cell is selectable.
mxGraph.prototype.isCellSelected = function(cell)
Returns true if the given cell is selected.
mxSpaceManager.prototype.isCellShiftable = function(cell)
Sets the graph that the layouts operate on.
mxGraph.prototype.isCellsLocked = function()
Returns true if the given cell may not be moved, sized, bended, disconnected, edited or selected.
mxGraph.prototype.isCellsMovable = function()
Returns cellsMovable.
mxGraph.prototype.isCellsResizable = function()
Returns cellsResizable.
mxGraph.prototype.isCellsSelectable = function()
Returns cellsSelectable.
mxGraph.prototype.isCellVisible = function(cell)
Returns true if the given cell is visible in this graph.
mxGraphHandler.prototype.isCloneEnabled = function()
Returns cloneEnabled.
mxGraph.prototype.isCloneEvent = function(evt)
Returns true if the given event is a clone event.
mxGraph.prototype.isCloneInvalidEdges = function()
Returns cloneInvalidEdges as a boolean.
mxCell.prototype.isCollapsed = function()
Returns true if the cell is collapsed.
mxGraphModel.prototype.isCollapsed = function(cell)
Returns true if the given mxCell is collapsed.
mxCell.prototype.isConnectable = function()
Returns true if the cell is connectable.
mxGraph.prototype.isConnectable = function(connectable)
Returns true if the connectionHandler is enabled.
mxGraphModel.prototype.isConnectable = function(cell)
Returns true if the given mxCell is connectable.
mxConnectionHandler.prototype.isConnectableCell = function(cell)
Returns true if the given cell is connectable.
mxEdgeHandler.prototype.isConnectableCell = function(cell)
Returns true if the given cell is connectable.
mxGraph.prototype.isConnectableEdges = function()
Returns connectableEdges as a boolean.
mxConnectionHandler.prototype.isConnecting = function()
Returns true if the source terminal has been clicked and a new connection is currently being previewed.
mxGraph.prototype.isConstrainChild = function(cell)
Returns true if the given cell should be kept inside the bounds of its parent according to the rules defined by getOverlap and isAllowOverlapParent.
mxGraph.prototype.isConstrainChildren = function()
Returns constrainChildren.
mxGraph.prototype.isConstrainChildrenOnResize = function()
Returns constrainChildrenOnResize.
mxGraph.prototype.isConstrainedEvent = function(evt)
Returns true if the given mouse event should be aligned to the grid.
mxVertexHandler.prototype.isConstrainedEvent = function(me)
Returns true if the aspect ratio if the cell should be maintained.
isConsumed: function(evt)
Returns true if the event has been consumed using consume.
mxEventObject.prototype.isConsumed = function()
Returns true if the event has been consumed.
mxMouseEvent.prototype.isConsumed = function()
Returns consumed.
mxGraphView.prototype.isContainerEvent = function(evt)
Returns true if the event origin is one of the drawing panes or containers of the view.
isControlDown: function(evt)
Returns true if the control key is pressed for the given event.
mxKeyHandler.prototype.isControlDown = function(evt)
Returns true if the control key is pressed.
mxGraphModel.prototype.isCreateIds = function()
Returns createIds.
mxConnectionHandler.prototype.isCreateTarget = function()
Returns createTarget.
mxGraphHandler.prototype.isDelayedSelection = function(cell)
Hook to return true for delayed selections.
mxGraph.prototype.isDisconnectOnMove = function()
Returns disconnectOnMove as a boolean.
mxGraph.prototype.isDropEnabled = function()
Returns dropEnabled as a boolean.
mxCell.prototype.isEdge = function()
Returns true if the cell is an edge.
mxGraphAbstractHierarchyCell.prototype.isEdge = function()
Returns whether or not this cell is an edge
mxGraphHierarchyEdge.prototype.isEdge = function()
Returns true.
mxGraphModel.prototype.isEdge = function(cell)
Returns true if the given cell is an edge.
mxGraphLayout.prototype.isEdgeIgnored = function(edge)
Returns a boolean indicating if the given mxCell should be ignored by the algorithm.
mxGraph.prototype.isEdgeLabelsMovable = function()
Returns edgeLabelsMovable.
mxGraph.prototype.isEdgeValid = function(edge,
source,
target)
Checks if the return value of getEdgeValidationError for the given arguments is null.
mxGraph.prototype.isEditing = function(cell)
Returns true if the given cell is currently being edited.
mxCellStatePreview.prototype.isEmpty = function()
Returns true if this contains no entries.
isEmpty: function()
Returns true if the clipboard currently has not data stored.
mxGraphSelectionModel.prototype.isEmpty = function()
Returns true if no cells are currently selected.
mxUndoableEdit.prototype.isEmpty = function()
Returns true if the this edit contains no changes.
mxUndoManager.prototype.isEmpty = function()
Returns true if the history is empty.
mxAutoSaveManager.prototype.isEnabled = function()
Returns true if events are handled.
mxCellMarker.prototype.isEnabled = function()
Returns true if events are handled.
mxConnectionHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxConstraintHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxDragSource.prototype.isEnabled = function()
Returns enabled.
mxGraph.prototype.isEnabled = function()
Returns true if the graph is enabled.
mxGraphHandler.prototype.isEnabled = function()
Returns enabled.
mxKeyHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxLayoutManager.prototype.isEnabled = function()
Returns true if events are handled.
mxOutline.prototype.isEnabled = function()
Returns true if events are handled.
mxPopupMenu.prototype.isEnabled = function()
Returns true if events are handled.
mxRubberband.prototype.isEnabled = function()
Returns true if events are handled.
mxSelectionCellsHandler.prototype.isEnabled = function()
Returns enabled.
mxSpaceManager.prototype.isEnabled = function()
Returns true if events are handled.
mxSwimlaneManager.prototype.isEnabled = function()
Returns true if events are handled.
mxTooltipHandler.prototype.isEnabled = function()
Returns true if events are handled.
mxUrlConverter.prototype.isEnabled = function()
Returns enabled.
mxGuide.prototype.isEnabledForEvent = function(evt)
Returns true if the guide should be enabled for the given native event.
mxGraph.prototype.isEnterStopsCellEditing = function()
Returns enterStopsCellEditing.
mxGraph.prototype.isEscapeEnabled = function()
Returns escapeEnabled.
mxConstraintHandler.prototype.isEventIgnored = function(me,
source)
Returns true if the given mxMouseEvent should be ignored in update.
mxGraph.prototype.isEventIgnored = function(evtName,
me,
sender)
Returns true if the event should be ignored in fireMouseEvent.
mxEventSource.prototype.isEventsEnabled = function()
Returns eventsEnabled.
mxCellEditor.prototype.isEventSource = function(evt)
Returns true if this editor is the source for the given native event.
mxGraph.prototype.isEventSourceIgnored = function(evtName,
me)
Returns true if the event should be ignored in fireMouseEvent.
codec.isExcluded = function(obj,
attr,
value,
isWrite)
Excludes user objects that are XML nodes.
mxObjectCodec.prototype.isExcluded = function(obj,
attr,
value,
write)
Returns true if the given attribute is to be ignored by the codec.
mxGraph.prototype.isExtendParent = function(cell)
Returns true if the parent of the given cell should be extended if the child has been resized so that it overlaps the parent.
mxGraph.prototype.isExtendParents = function()
Returns extendParents.
mxSpaceManager.prototype.isExtendParents = function()
Returns true if events are handled.
mxGraph.prototype.isExtendParentsOnAdd = function()
Returns extendParentsOnAdd.
mxPanningHandler.prototype.isForcePanningEvent = function(me)
Returns true if the given mxMouseEvent should start panning.
mxRubberband.prototype.isForceRubberbandEvent = function(me)
Returns true if the given mxMouseEvent should start rubberband selection.
mxKeyHandler.prototype.isGraphEvent = function(evt)
Returns true if the event should be processed by this handler, that is, if the event source is either the target, one of its direct children, a descendant of the mxGraph.container, or the mxGraph.cellEditor of the graph.
mxDragSource.prototype.isGridEnabled = function()
Returns gridEnabled.
mxGraph.prototype.isGridEnabled = function()
Returns gridEnabled as a boolean.
mxGraph.prototype.isGridEnabledEvent = function(evt)
Returns true if the given mouse event should be aligned to the grid.
mxDragSource.prototype.isGuidesEnabled = function()
Returns guidesEnabled.
mxEdgeHandler.prototype.isHandleEnabled = function(index)
Creates the shape used to display the given bend.
mxEdgeHandler.prototype.isHandleVisible = function(index)
Returns true if the handle at the given index is visible.
mxCellEditor.prototype.isHideLabel = function(state)
Returns true if the label should be hidden while the cell is being edited.
mxTooltipHandler.prototype.isHideOnHover = function()
Returns hideOnHover.
mxCompactTreeLayout.prototype.isHorizontal = function()
Returns horizontal.
mxPartitionLayout.prototype.isHorizontal = function()
Returns horizontal.
mxStackLayout.prototype.isHorizontal = function()
Returns horizontal.
mxSwimlaneManager.prototype.isHorizontal = function()
Returns horizontal.
mxCellMarker.prototype.isHotspotEnabled = function()
Returns true if hotspot is used in intersects.
mxImageShape.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxLabel.prototype.isHtmlAllowed = function()
Returns true for non-rounded, non-rotated shapes with no glass gradient and no indicator shape.
mxRectangleShape.prototype.isHtmlAllowed = function()
Returns true for non-rounded, non-rotated shapes with no glass gradient.
mxShape.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxText.prototype.isHtmlAllowed = function()
Returns true if HTML is allowed for this shape.
mxGraph.prototype.isHtmlLabel = function(cell)
Returns true if the label must be rendered as HTML markup.
mxGraph.prototype.isHtmlLabels = function()
Returns htmlLabels.
mxHandle.prototype.isHtmlRequired = function()
Returns true if this handle should be rendered in HTML.
mxConnectionHandler.prototype.isImmediateConnectSource = function(state)
Returns true if a tap on the given source state should immediately start connecting.
mxGraph.prototype.isInvokesStopCellEditing = function()
Returns invokesStopCellEditing.
mxConstraintHandler.prototype.isKeepFocusEvent = function(me)
Returns true if the current focused state should not be changed for the given event.
mxGraph.prototype.isLabelClipped = function(cell)
Returns true if the overflow portion of labels should be hidden.
mxCellRenderer.prototype.isLabelEvent = function(state,
evt)
Returns true if the event is for the label of the given state.
mxGraph.prototype.isLabelMovable = function(cell)
Returns true if the given edges’s label is moveable.
isLanguageSupported: function(lan)
Hook for subclassers to disable support for a given language.
mxGraphModel.prototype.isLayer = function(cell)
Returns true if isRoot returns true for the parent of the given cell.
isLeftMouseButton: function(evt)
Returns true if the left mouse button is pressed for the given event.
mxVertexHandler.prototype.isLivePreviewBorder = function()
Called if livePreview is enabled to check if a border should be painted.
mxGraph.prototype.isLoop = function(state)
Returns true if the given cell state is a loop.
mxPopupMenu.prototype.isMenuShowing = function()
Returns true if the menu is showing.
isMetaDown: function(evt)
Returns true if the meta key is pressed for the given event.
isMiddleMouseButton: function(evt)
Returns true if the middle mouse button is pressed for the given event.
mxCellEditor.prototype.isModified = function()
Returns modified.
mxEditor.prototype.isModified = function ()
Returns modified.
mxGraph.prototype.isMouseDown
Holds the state of the mouse button.
isMouseEvent: function(evt)
Returns true if the event was generated using a mouse (not a pen or touch device).
mxFastOrganicLayout.prototype.isMoveable
Array of booleans representing the movable states of the vertices.
mxGraphHandler.prototype.isMoveEnabled = function()
Returns moveEnabled.
mxConnectionHandler.prototype.isMoveIconToFrontForState = function(state)
Returns true if the state has a HTML label in the graph’s container, otherwise it returns moveIconFront.
mxGraph.prototype.isMultigraph = function()
Returns multigraph as a boolean.
isMultiTouchEvent: function(evt)
Returns true if the event was generated using a touch device (not a pen or mouse).
isNaN: function(value)
Returns true if the given value is of type number and isNaN returns true.
isNode: function(value,
nodeName,
attributeName,
attributeValue)
Returns true if the given value is an XML node with the node name and if the optional attribute has the specified value.
isNumeric: function(n)
Returns true if the specified value is numeric, that is, if it is not null, not an empty string, not a HEX number and isNaN returns false.
mxObjectCodec.prototype.isNumericAttribute = function(dec,
attr,
obj)
Returns true if the given XML attribute is a numeric value.
mxGraph.prototype.isOrthogonal = function(edge)
Returns true if perimeter points should be computed such that the resulting edge has only horizontal or vertical segments.
mxConnectionHandler.prototype.isOutlineConnectEvent = function(me)
Returns true if outlineConnect is true and the source of the event is the outline shape or shift is pressed.
mxEdgeHandler.prototype.isOutlineConnectEvent = function(me)
Returns true if outlineConnect is true and the source of the event is the outline shape or shift is pressed.
mxPolyline.prototype.isPaintBoundsInverted = function()
Returns false.
mxShape.prototype.isPaintBoundsInverted = function()
Returns true if the bounds should be inverted.
mxText.prototype.isPaintBoundsInverted = function()
Inverts the bounds if mxShape.isBoundsInverted returns true or if the horizontal style is false.
mxPanningHandler.prototype.isPanningEnabled = function()
Returns panningEnabled.
mxPanningHandler.prototype.isPanningTrigger = function(me)
Returns true if the given event is a panning trigger for the optional given cell.
mxShape.prototype.isParseVml = function()
Specifies if any VML should be added via insertAdjacentHtml to the DOM.
mxText.prototype.isParseVml = function()
Text shapes do not contain VML markup and do not need to be parsed.
mxPanningHandler.prototype.isPinchEnabled = function()
Returns pinchEnabled.
isPopupTrigger: function(evt)
Returns true if the event is a popup trigger.
mxMouseEvent.prototype.isPopupTrigger = function()
Returns true if the event is a popup trigger.
mxPopupMenu.prototype.isPopupTrigger = function(me)
Returns true if the given event is a popupmenu trigger for the optional given cell.
mxGraph.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, the cell returned by getTerminalForPort should be used as the terminal and the port should be referenced by the ID in either the mxConstants.STYLE_SOURCE_PORT or the or the mxConstants.STYLE_TARGET_PORT.
mxHierarchicalLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxSwimlaneLayout.prototype.isPort = function(cell)
Returns true if the given cell is a “port”, that is, when connecting to it, its parent is the connecting vertex in terms of graph traversal
mxGraph.prototype.isPortsEnabled = function()
Returns portsEnabled as a boolean.
mxEditor.prototype.isPropertiesVisible = function ()
Returns true if the properties dialog is currently visible.
mxXmlRequest.prototype.isReady = function()
Returns true if the response is ready.
mxGraph.prototype.isRecursiveResize = function(state)
Returns recursiveResize.
codec.isReference = function(obj,
attr,
value,
isWrite)
Returns true for the child attribute if the child cell had a previous parent or if we’re reading the child as an attribute rather than a child node, in which case it’s always a reference.
mxObjectCodec.prototype.isReference = function(obj,
attr,
value,
write)
Returns true if the given fieldname is to be treated as a textual reference (ID).
mxUrlConverter.prototype.isRelativeUrl = function(url)
Returns true if the given URL is relative.
mxGraphHandler.prototype.isRemoveCellsFromParent = function()
Returns removeCellsFromParent.
mxEdgeHandler.prototype.isRemovePointEvent = function(evt)
Returns true if the given event is a trigger to remove a point.
mxGraphView.prototype.isRendering = function()
Returns rendering.
mxWindow.prototype.isResizable = function()
Returns true if the window is resizable.
mxGraph.prototype.isResizeContainer = function()
Returns resizeContainer.
mxSwimlaneManager.prototype.isResizeEnabled = function()
Returns resizeEnabled.
mxGraphHierarchyEdge.prototype.isReversed
Whether or not the direction of this edge has been reversed internally to create a DAG for the hierarchical layout
isRightMouseButton: function(evt)
Returns true if the right mouse button was pressed.
mxGraphModel.prototype.isRoot = function(cell)
Returns true if the given cell is the root of the model and a non-null value.
mxVertexHandler.prototype.isRotationHandleVisible = function()
Returns true if the rotation handle should be showing.
mxAnimation.prototype.isRunning = function()
Returns true if the animation is running.
mxGraphView.prototype.isScrollEvent = function(evt)
Returns true if the event origin is one of the scrollbars of the container in IE.
mxGraphSelectionModel.prototype.isSelected = function(cell)
Returns true if the given mxCell is selected.
mxGraphHandler.prototype.isSelectEnabled = function()
Returns selectEnabled.
mxEdgeHandler.prototype.isSelectionDashed = function()
Returns mxConstants.EDGE_SELECTION_DASHED.
mxVertexHandler.prototype.isSelectionDashed = function()
Returns mxConstants.VERTEX_SELECTION_DASHED.
mxGraph.prototype.isSelectionEmpty = function()
Returns true if the selection is empty.
mxPopupMenuHandler.prototype.isSelectOnPopup = function(me)
Hook for returning if a cell should be selected for a given mxMouseEvent.
mxCellEditor.prototype.isSelectText = function()
Returns selectText.
mxCellRenderer.prototype.isShapeEvent = function(state,
evt)
Returns true if the event is for the shape of the given state.
isShiftDown: function(evt)
Returns true if the shift key is pressed for the given event.
mxSpaceManager.prototype.isShiftDownwards = function()
Returns true if events are handled.
mxSpaceManager.prototype.isShiftRightwards = function()
Returns true if events are handled.
mxUndoableEdit.prototype.isSignificant = function()
Returns significant.
mxGraphSelectionModel.prototype.isSingleSelection = function()
Returns singleSelection as a boolean.
mxVertexHandler.prototype.isSizerVisible = function(index)
Returns true if the sizer for the given index is visible.
mxEdgeHandler.prototype.isSnapToTerminalsEvent = function(me)
Returns true if snapToTerminals is true and if alt is not pressed.
mxMouseEvent.prototype.isSource = function(shape)
Returns true if the given mxShape is the source of evt.
mxGraph.prototype.isSplitEnabled = function()
Returns splitEnabled as a boolean.
mxGraph.prototype.isSplitTarget = function(target,
cells,
evt)
Returns true if the given edge may be splitted into two edges with the given cell as a new terminal between the two.
mxConnectionHandler.prototype.isStartEvent = function(me)
Returns true if the given mouse down event should start this handler.
mxConstraintHandler.prototype.isStateIgnored = function(state,
source)
Returns true if the given state should be ignored.
mxCellEditor.prototype.isStopEditingEvent = function(evt)
Returns true if the given keydown event should stop cell editing.
mxConnectionHandler.prototype.isStopEvent = function(me)
Returns true if the given mouse up event should stop this handler.
mxGraph.prototype.isSwimlane = function (cell)
Returns true if the given cell is a swimlane in the graph.
mxSwimlaneManager.prototype.isSwimlaneIgnored = function(swimlane)
Returns true if the given swimlane should be ignored.
mxGraph.prototype.isSwimlaneNesting = function()
Returns swimlaneNesting as a boolean.
mxGraph.prototype.isSwimlaneSelectionEnabled = function()
Returns swimlaneSelectionEnabled as a boolean.
mxGraph.prototype.isSyntheticEventIgnored = function(evtName,
me,
sender)
Hook for ignoring synthetic mouse events after touchend in Firefox.
mxGraph.prototype.isTerminalPointMovable = function(cell,
source)
Returns true if the given terminal point is movable.
mxGraph.prototype.isToggleEvent = function(evt)
Returns true if the given event is a toggle event.
isTouchEvent: function(evt)
Returns true if the event was generated using a touch device (not a pen or mouse).
mxGraph.prototype.isValidAncestor = function(cell,
parent,
recurse)
Returns whether or not the specified parent is a valid ancestor of the specified cell, either direct or indirectly based on whether ancestor recursion is enabled.
mxGraph.prototype.isValidConnection = function(source,
target)
Returns true if the given target cell is a valid target for source.
mxGraph.prototype.isValidDropTarget = function(cell,
cells,
evt)
Returns true if the given cell is a valid drop target for the specified cells.
mxGraph.prototype.isValidRoot = function(cell)
Returns true if the given cell is a valid root for the cell display hierarchy.
mxConnectionHandler.prototype.isValidSource = function(cell,
me)
Returns mxGraph.isValidSource for the given source terminal.
mxGraph.prototype.isValidSource = function(cell)
Returns true if the given cell is a valid source for new connections.
mxCellMarker.prototype.isValidState = function(state)
Returns true if the given mxCellState is a valid state.
mxConnectionHandler.prototype.isValidTarget = function(cell)
Returns true.
mxGraph.prototype.isValidTarget = function(cell)
Returns isValidSource for the given cell.
mxCell.prototype.isVertex = function()
Returns true if the cell is a vertex.
mxGraphAbstractHierarchyCell.prototype.isVertex = function()
Returns whether or not this cell is a node
mxGraphHierarchyNode.prototype.isVertex = function()
Returns true.
mxGraphModel.prototype.isVertex = function(cell)
Returns true if the given cell is a vertex.
mxCompactTreeLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxFastOrganicLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxGraphLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored by the algorithm.
mxRadialTreeLayout.prototype.isVertexIgnored = function(vertex)
Returns a boolean indicating if the given mxCell should be ignored as a vertex.
mxGraph.prototype.isVertexLabelsMovable = function()
Returns vertexLabelsMovable.
mxGraphLayout.prototype.isVertexMovable = function(cell)
Returns a boolean indicating if the given mxCell is movable or bendable by the algorithm.
mxEdgeHandler.prototype.isVirtualBendsEnabled = function(evt)
Returns true if virtual bends should be added.
mxCell.prototype.isVisible = function()
Returns true if the cell is visibile.
mxGraphModel.prototype.isVisible = function(cell)
Returns true if the given mxCell is visible.
isVisible: function()
Returns true if the console is visible.
mxWindow.prototype.isVisible = function()
Returns true if the window is visible.
isVml: function(node)
Returns true if the given node is in the VML namespace.
mxGraph.prototype.isWrapping = function(cell)
This enables wrapping for HTML labels.
mxPopupMenu.prototype.itemCount
Contains the number of times addItem has been called for a new menu.
mxFastOrganicLayout.prototype.iteration
Current iteration count.
mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement
The total number of crossings found in the best configuration so far
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables.html b/docs/js-api/index/Variables.html index 67db971b0..5a16ba942 100644 --- a/docs/js-api/index/Variables.html +++ b/docs/js-api/index/Variables.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables10.html b/docs/js-api/index/Variables10.html index 40216ddee..8650f8173 100644 --- a/docs/js-api/index/Variables10.html +++ b/docs/js-api/index/Variables10.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables11.html b/docs/js-api/index/Variables11.html index 041cae5de..148ec8160 100644 --- a/docs/js-api/index/Variables11.html +++ b/docs/js-api/index/Variables11.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables12.html b/docs/js-api/index/Variables12.html index f23e74dec..abbe50bf4 100644 --- a/docs/js-api/index/Variables12.html +++ b/docs/js-api/index/Variables12.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables13.html b/docs/js-api/index/Variables13.html index 21bf7c38c..92a6636a4 100644 --- a/docs/js-api/index/Variables13.html +++ b/docs/js-api/index/Variables13.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables14.html b/docs/js-api/index/Variables14.html index cb0b9e699..c5f20f20b 100644 --- a/docs/js-api/index/Variables14.html +++ b/docs/js-api/index/Variables14.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables15.html b/docs/js-api/index/Variables15.html index 06cc2556d..8ee0dd13b 100644 --- a/docs/js-api/index/Variables15.html +++ b/docs/js-api/index/Variables15.html @@ -37,7 +37,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables2.html b/docs/js-api/index/Variables2.html index 1801f1f06..d3712f485 100644 --- a/docs/js-api/index/Variables2.html +++ b/docs/js-api/index/Variables2.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables3.html b/docs/js-api/index/Variables3.html index 45e18579c..1fd7e4c53 100644 --- a/docs/js-api/index/Variables3.html +++ b/docs/js-api/index/Variables3.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables4.html b/docs/js-api/index/Variables4.html index f5ef15989..c51bf33bb 100644 --- a/docs/js-api/index/Variables4.html +++ b/docs/js-api/index/Variables4.html @@ -11,9 +11,9 @@ if (browserType) {document.write("
");if (browserV -
Variable Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 ease, mxMorphing
 edge, mxCell
 EDGE_SELECTION_COLOR, mxConstants
 EDGE_SELECTION_STROKEWIDTH, mxConstants
 edgeLabelsMovable, mxGraph
 edgeMapper
 edgeRouting, mxCompactTreeLayout
 edges
 edgesSet
 edgeState, mxConnectionHandler
 edgeStyle, mxCoordinateAssignment
 EDGESTYLE_ELBOW, mxConstants
 EDGESTYLE_ENTITY_RELATION, mxConstants
 EDGESTYLE_LOOP, mxConstants
 EDGESTYLE_ORTHOGONAL, mxConstants
 EDGESTYLE_SEGMENT, mxConstants
 EDGESTYLE_SIDETOSIDE, mxConstants
 EDGESTYLE_TOPTOBOTTOM, mxConstants
 EDITING_STARTED, mxEvent
 EDITING_STOPPED, mxEvent
 editingCell, mxCellEditor
 editor
 ELBOW_HORIZONTAL, mxConstants
 ELBOW_VERTICAL, mxConstants
 element, mxDragSource
 EMPTY_ARRAY, mxGraph
 emptyLabelText, mxCellEditor
 enabled
 encodeDefaults, mxCodec
 END_EDIT, mxEvent
 END_UPDATE, mxEvent
 endingUpdate, mxGraphModel
 enterStopsCellEditing, mxGraph
 ENTITY_SEGMENT, mxConstants
 error
 errorImage, mxUtils
 errorResource, mxUtils
 ESCAPE, mxEvent
 escapeEnabled, mxGraph
 escapePostData, mxEditor
 eventListeners, mxEventSource
 eventsEnabled, mxEventSource
 eventSource, mxEventSource
 evt, mxMouseEvent
 exclude, mxObjectCodec
 EXECUTE, mxEvent
 EXECUTED, mxEvent
 expandedImage, mxGraph
 exportEnabled, mxGraph
 extendParents
 extendParentsOnAdd, mxGraph
 extension, mxResources
+
Variable Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
E
 ease, mxMorphing
 edge, mxCell
 EDGE_SELECTION_COLOR, mxConstants
 EDGE_SELECTION_STROKEWIDTH, mxConstants
 edgeLabelsMovable, mxGraph
 edgeMapper
 edgeRouting, mxCompactTreeLayout
 edges
 edgesSet
 edgeState, mxConnectionHandler
 edgeStyle, mxHierarchicalLayout
 EDGESTYLE_ELBOW, mxConstants
 EDGESTYLE_ENTITY_RELATION, mxConstants
 EDGESTYLE_LOOP, mxConstants
 EDGESTYLE_ORTHOGONAL, mxConstants
 EDGESTYLE_SEGMENT, mxConstants
 EDGESTYLE_SIDETOSIDE, mxConstants
 EDGESTYLE_TOPTOBOTTOM, mxConstants
 EDITING_STARTED, mxEvent
 EDITING_STOPPED, mxEvent
 editingCell, mxCellEditor
 editor
 ELBOW_HORIZONTAL, mxConstants
 ELBOW_VERTICAL, mxConstants
 element, mxDragSource
 EMPTY_ARRAY, mxGraph
 emptyLabelText, mxCellEditor
 enabled
 encodeDefaults, mxCodec
 END_EDIT, mxEvent
 END_UPDATE, mxEvent
 endingUpdate, mxGraphModel
 enterStopsCellEditing, mxGraph
 ENTITY_SEGMENT, mxConstants
 error
 errorImage, mxUtils
 errorResource, mxUtils
 ESCAPE, mxEvent
 escapeEnabled, mxGraph
 escapePostData, mxEditor
 eventListeners, mxEventSource
 eventsEnabled, mxEventSource
 eventSource, mxEventSource
 evt, mxMouseEvent
 exclude, mxObjectCodec
 EXECUTE, mxEvent
 EXECUTED, mxEvent
 expandedImage, mxGraph
 exportEnabled, mxGraph
 extendParents
 extendParentsOnAdd, mxGraph
 extension, mxResources
-
mxMorphing.prototype.ease
Ease-off for movement towards the given vector.
mxCell.prototype.edge
Specifies whether the cell is an edge.
Defines the color to be used for the selection border of edges.
Defines the strokewidth to be used for edge selections.
mxGraph.prototype.edgeLabelsMovable
Specifies the return value for edges in isLabelMovable.
mxGraphHierarchyModel.prototype.edgeMapper
Map from graph edges to internal model edges
mxSwimlaneModel.prototype.edgeMapper
Map from graph edges to internal model edges
mxCompactTreeLayout.prototype.edgeRouting
Whether or not to apply the internal tree edge routing.
mxCell.prototype.edges
Holds the edges.
mxGraphHierarchyEdge.prototype.edges
The graph edge(s) this object represents.
A cache of edges whose source terminal is the key
A cache of edges whose source terminal is the key
mxConnectionHandler.prototype.edgeState
Optional mxCellState that represents the preview edge while the handler is active.
mxCoordinateAssignment.prototype.edgeStyle
The style to apply between cell layers to edge segments
Name of the elbow edge style.
Name of the entity relation edge style.
Name of the loop edge style.
Name of the generic orthogonal edge style.
Name of the generic segment edge style.
Name of the side to side edge style.
Name of the top to bottom edge style.
Specifies the event name for editingStarted.
Specifies the event name for editingStopped.
mxCellEditor.prototype.editingCell
Reference to the mxCell that is currently being edited.
mxDefaultKeyHandler.prototype.editor
Reference to the enclosing mxEditor.
mxDefaultToolbar.prototype.editor
Reference to the enclosing mxEditor.
Constant for elbow horizontal.
Constant for elbow vertical.
mxDragSource.prototype.element
Reference to the DOM node which was made draggable.
mxGraph.prototype.EMPTY_ARRAY
Immutable empty array instance.
mxCellEditor.prototype.emptyLabelText
Text to be displayed for empty labels.
mxAutoSaveManager.prototype.enabled
Specifies if event handling is enabled.
mxCellMarker.prototype.enabled
Specifies if the marker is enabled.
mxConnectionHandler.prototype.enabled
Specifies if events are handled.
mxConstraintHandler.prototype.enabled
Specifies if events are handled.
mxDragSource.prototype.enabled
Specifies if this drag source is enabled.
mxGraph.prototype.enabled
Specifies the return value for isEnabled.
mxGraphHandler.prototype.enabled
Specifies if events are handled.
mxKeyHandler.prototype.enabled
Specifies if events are handled.
mxLayoutManager.prototype.enabled
Specifies if event handling is enabled.
mxOutline.prototype.enabled
Specifies if events are handled.
mxPopupMenu.prototype.enabled
Specifies if events are handled.
mxRubberband.prototype.enabled
Specifies if events are handled.
mxSelectionCellsHandler.prototype.enabled
Specifies if events are handled.
mxSpaceManager.prototype.enabled
Specifies if event handling is enabled.
mxSwimlaneManager.prototype.enabled
Specifies if event handling is enabled.
mxToolbar.prototype.enabled
Specifies if events are handled.
mxTooltipHandler.prototype.enabled
Specifies if events are handled.
mxUrlConverter.prototype.enabled
Specifies if the converter is enabled.
mxCodec.prototype.encodeDefaults
Specifies if default values should be encoded.
Specifies the event name for endEdit.
Specifies the event name for endUpdate.
mxGraphModel.prototype.endingUpdate
True if the program flow is currently inside endUpdate.
mxGraph.prototype.enterStopsCellEditing
If true, pressing the enter key without pressing control or shift will stop editing and accept the new value.
Defines the length of the horizontal segment of an Entity Relation.
mxConnectionHandler.prototype.error
Holds the current validation error while connections are being created.
mxEdgeHandler.prototype.error
Holds the current validation error while a connection is being changed.
Defines the image used for error dialogs.
Specifies the resource key for the title of the error window.
Specifies the event name for escape.
mxGraph.prototype.escapeEnabled
Specifies if mxKeyHandler should invoke escape when the escape key is pressed.
mxEditor.prototype.escapePostData
Specifies if the data in the post request for saving a diagram should be converted using encodeURIComponent.
mxEventSource.prototype.eventListeners
Holds the event names and associated listeners in an array.
mxEventSource.prototype.eventsEnabled
Specifies if events can be fired.
mxEventSource.prototype.eventSource
Optional source for events.
mxMouseEvent.prototype.evt
Holds the inner event object.
mxObjectCodec.prototype.exclude
Array containing the variable names that should be ignored by the codec.
Specifies the event name for execute.
Specifies the event name for executed.
mxGraph.prototype.expandedImage
Specifies the mxImage to indicate a expanded state.
mxGraph.prototype.exportEnabled
Specifies the return value for canExportCell.
mxGraph.prototype.extendParents
Specifies if a parent should contain the child bounds after a resize of the child.
mxSpaceManager.prototype.extendParents
Specifies if event handling is enabled.
mxGraph.prototype.extendParentsOnAdd
Specifies if parents should be extended according to the extendParents switch if cells are added.
Specifies the extension used for language files.
+
mxMorphing.prototype.ease
Ease-off for movement towards the given vector.
mxCell.prototype.edge
Specifies whether the cell is an edge.
Defines the color to be used for the selection border of edges.
Defines the strokewidth to be used for edge selections.
mxGraph.prototype.edgeLabelsMovable
Specifies the return value for edges in isLabelMovable.
mxGraphHierarchyModel.prototype.edgeMapper
Map from graph edges to internal model edges
mxSwimlaneModel.prototype.edgeMapper
Map from graph edges to internal model edges
mxCompactTreeLayout.prototype.edgeRouting
Whether or not to apply the internal tree edge routing.
mxCell.prototype.edges
Holds the edges.
mxGraphHierarchyEdge.prototype.edges
The graph edge(s) this object represents.
A cache of edges whose source terminal is the key
A cache of edges whose source terminal is the key
mxConnectionHandler.prototype.edgeState
Optional mxCellState that represents the preview edge while the handler is active.
mxHierarchicalLayout.prototype.edgeStyle
The style to apply between cell layers to edge segments
Name of the elbow edge style.
Name of the entity relation edge style.
Name of the loop edge style.
Name of the generic orthogonal edge style.
Name of the generic segment edge style.
Name of the side to side edge style.
Name of the top to bottom edge style.
Specifies the event name for editingStarted.
Specifies the event name for editingStopped.
mxCellEditor.prototype.editingCell
Reference to the mxCell that is currently being edited.
mxDefaultKeyHandler.prototype.editor
Reference to the enclosing mxEditor.
mxDefaultToolbar.prototype.editor
Reference to the enclosing mxEditor.
Constant for elbow horizontal.
Constant for elbow vertical.
mxDragSource.prototype.element
Reference to the DOM node which was made draggable.
mxGraph.prototype.EMPTY_ARRAY
Immutable empty array instance.
mxCellEditor.prototype.emptyLabelText
Text to be displayed for empty labels.
mxAutoSaveManager.prototype.enabled
Specifies if event handling is enabled.
mxCellMarker.prototype.enabled
Specifies if the marker is enabled.
mxConnectionHandler.prototype.enabled
Specifies if events are handled.
mxConstraintHandler.prototype.enabled
Specifies if events are handled.
mxDragSource.prototype.enabled
Specifies if this drag source is enabled.
mxGraph.prototype.enabled
Specifies the return value for isEnabled.
mxGraphHandler.prototype.enabled
Specifies if events are handled.
mxKeyHandler.prototype.enabled
Specifies if events are handled.
mxLayoutManager.prototype.enabled
Specifies if event handling is enabled.
mxOutline.prototype.enabled
Specifies if events are handled.
mxPopupMenu.prototype.enabled
Specifies if events are handled.
mxRubberband.prototype.enabled
Specifies if events are handled.
mxSelectionCellsHandler.prototype.enabled
Specifies if events are handled.
mxSpaceManager.prototype.enabled
Specifies if event handling is enabled.
mxSwimlaneManager.prototype.enabled
Specifies if event handling is enabled.
mxToolbar.prototype.enabled
Specifies if events are handled.
mxTooltipHandler.prototype.enabled
Specifies if events are handled.
mxUrlConverter.prototype.enabled
Specifies if the converter is enabled.
mxCodec.prototype.encodeDefaults
Specifies if default values should be encoded.
Specifies the event name for endEdit.
Specifies the event name for endUpdate.
mxGraphModel.prototype.endingUpdate
True if the program flow is currently inside endUpdate.
mxGraph.prototype.enterStopsCellEditing
If true, pressing the enter key without pressing control or shift will stop editing and accept the new value.
Defines the length of the horizontal segment of an Entity Relation.
mxConnectionHandler.prototype.error
Holds the current validation error while connections are being created.
mxEdgeHandler.prototype.error
Holds the current validation error while a connection is being changed.
Defines the image used for error dialogs.
Specifies the resource key for the title of the error window.
Specifies the event name for escape.
mxGraph.prototype.escapeEnabled
Specifies if mxKeyHandler should invoke escape when the escape key is pressed.
mxEditor.prototype.escapePostData
Specifies if the data in the post request for saving a diagram should be converted using encodeURIComponent.
mxEventSource.prototype.eventListeners
Holds the event names and associated listeners in an array.
mxEventSource.prototype.eventsEnabled
Specifies if events can be fired.
mxEventSource.prototype.eventSource
Optional source for events.
mxMouseEvent.prototype.evt
Holds the inner event object.
mxObjectCodec.prototype.exclude
Array containing the variable names that should be ignored by the codec.
Specifies the event name for execute.
Specifies the event name for executed.
mxGraph.prototype.expandedImage
Specifies the mxImage to indicate a expanded state.
mxGraph.prototype.exportEnabled
Specifies the return value for canExportCell.
mxGraph.prototype.extendParents
Specifies if a parent should contain the child bounds after a resize of the child.
mxSpaceManager.prototype.extendParents
Specifies if event handling is enabled.
mxGraph.prototype.extendParentsOnAdd
Specifies if parents should be extended according to the extendParents switch if cells are added.
Specifies the extension used for language files.
@@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables5.html b/docs/js-api/index/Variables5.html index 8097f3049..1c80d59fa 100644 --- a/docs/js-api/index/Variables5.html +++ b/docs/js-api/index/Variables5.html @@ -25,7 +25,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables6.html b/docs/js-api/index/Variables6.html index 9fe5d90c2..dcc46cca0 100644 --- a/docs/js-api/index/Variables6.html +++ b/docs/js-api/index/Variables6.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables7.html b/docs/js-api/index/Variables7.html index 064befc46..8a01de85b 100644 --- a/docs/js-api/index/Variables7.html +++ b/docs/js-api/index/Variables7.html @@ -29,7 +29,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables8.html b/docs/js-api/index/Variables8.html index 1ffe730fb..dc98a45ed 100644 --- a/docs/js-api/index/Variables8.html +++ b/docs/js-api/index/Variables8.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/index/Variables9.html b/docs/js-api/index/Variables9.html index 36599443e..a6669f8eb 100644 --- a/docs/js-api/index/Variables9.html +++ b/docs/js-api/index/Variables9.html @@ -21,7 +21,7 @@ if (browserType) {document.write("
");if (browserV - diff --git a/docs/js-api/javascript/searchdata.js b/docs/js-api/javascript/searchdata.js index e2a425752..0310861e4 100644 --- a/docs/js-api/javascript/searchdata.js +++ b/docs/js-api/javascript/searchdata.js @@ -1,4 +1,34 @@ var indexSectionsWithContent = { + "Files": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": false, + "C": false, + "D": false, + "E": false, + "F": false, + "G": false, + "H": false, + "I": false, + "J": false, + "K": false, + "L": false, + "M": true, + "N": false, + "O": false, + "P": false, + "Q": false, + "R": false, + "S": false, + "T": false, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, "Functions": { "Symbols": false, "Numbers": false, @@ -59,7 +89,7 @@ var indexSectionsWithContent = { "Y": false, "Z": false }, - "Variables": { + "General": { "Symbols": false, "Numbers": false, "A": true, @@ -119,37 +149,7 @@ var indexSectionsWithContent = { "Y": false, "Z": false }, - "Files": { - "Symbols": false, - "Numbers": false, - "A": true, - "B": false, - "C": false, - "D": false, - "E": false, - "F": false, - "G": false, - "H": false, - "I": false, - "J": false, - "K": false, - "L": false, - "M": true, - "N": false, - "O": false, - "P": false, - "Q": false, - "R": false, - "S": false, - "T": false, - "U": false, - "V": false, - "W": false, - "X": false, - "Y": false, - "Z": false - }, - "General": { + "Variables": { "Symbols": false, "Numbers": false, "A": true, diff --git a/docs/js-api/search/FunctionsC.html b/docs/js-api/search/FunctionsC.html index 9e55efd5c..fa02c38f4 100644 --- a/docs/js-api/search/FunctionsC.html +++ b/docs/js-api/search/FunctionsC.html @@ -11,7 +11,7 @@ if (browserType) {document.write("
");if (browserV -
Loading...
calcAttraction, mxFastOrganicLayout
calcPositions, mxFastOrganicLayout
calcRepulsion, mxFastOrganicLayout
calcRowDims, mxRadialTreeLayout
calculateCrossings, mxMedianHybridCrossingReduction
calculatedWeightedValue, mxCoordinateAssignment
calculateRankCrossing, mxMedianHybridCrossingReduction
calculateWidestRank, mxCoordinateAssignment
canExportCell, mxGraph
canImportCell, mxGraph
canRedo, mxUndoManager
canUndo, mxUndoManager
cellCloned, mxGraphModel
cellConnected, mxGraph
cellsFolded, mxGraph
cellsOrdered, mxGraph
cellsRemoved, mxGraph
cellsToggled, mxGraph
center, mxGraph
changePoints, mxEdgeHandler
changeSelection, mxGraphSelectionModel
changeTerminalPoint, mxEdgeHandler
check, mxMultiplicity
checkLabelHandle, mxEdgeHandler
checkNeighbors, mxMultiplicity
checkTerminal, mxMultiplicity
checkTolerance, mxVertexHandler
checkType, mxMultiplicity
circle, mxCircleLayout
click, mxGraph
cloneCell, mxGraphModel
cloneCellImpl, mxGraphModel
clonePreviewState, mxEdgeHandler
cloneTemplate, mxObjectCodec
cloneValue, mxCell
computeAspect, mxStencil
configure, mxEditor
configureShape, mxCellRenderer
confirm, mxUtils
connectCell, mxGraph
consumePanningTrigger, mxPanningHandler
convert, mxUrlConverter
convertAttributeToXml, mxObjectCodec
convertWaypoint, mxConnectionHandler
copy, mxClipboard
copyStyle, mxVertexHandler
createBounds, mxVertexHandler
createCanvas, mxShape
createCellOverlays, mxCellRenderer
createClip, mxSvgCanvas2D
createConditions, mxDefaultPopupMenu
createControl, mxCellRenderer
createCustomHandles, mxVertexHandler
createDashPattern, mxSvgCanvas2D
createDiv, mxSvgCanvas2D
createDragElement, mxDragSource
createEdgeState, mxConnectionHandler
createFill, mxVmlCanvas2D
createGradientId, mxSvgCanvas2D
createGroup, mxEditor
createHandler, mxGraph
createHandleShape, mxEdgeHandler
createHtmlPane, mxGraphView
createIcons, mxConnectionHandler
createId, mxGraphModel
createImage, mxUtils
createIndicatorShape, mxCellRenderer
createLabel, mxCellRenderer
createLabelHandleShape, mxEdgeHandler
createLine, mxCompactTreeLayout
createMenu, mxDefaultPopupMenu
createNode, mxCompactTreeLayout
createPageSelector, mxPrintPreview
createPopupMenu, mxEditor
createPreviewElement, mxDragSource
createPreviewShape, mxGraphHandler
createRect, mxVmlCanvas2D
createRoot, mxGraphModel
createShadowFill, mxVmlCanvas2D
createShadowStroke, mxVmlCanvas2D
createSizerShape, mxVertexHandler
createStroke, mxVmlCanvas2D
createStyle, mxSvgCanvas2D
createSubmenu, mxPopupMenu
createSvg, mxShape
createSvgGradient, mxSvgCanvas2D
createTargetVertex, mxConnectionHandler
createTasks, mxEditor
createText, mxVmlCanvas2D
createTextDiv, mxCellEditor
createTolerance, mxSvgCanvas2D
createToolbar, mxEditor
createTransparentFill, mxVmlCanvas2D
createUndoableEdit, mxGraphModel
createUrlConverter, mxAbstractCanvas2D
createVertex, mxGraph
createVirtualBend, mxElbowEdgeHandler
createVirtualBends, mxEdgeHandler
createVml, mxShape
createVmlElement, mxVmlCanvas2D
createVmlPane, mxGraphView
cut, mxClipboard
cycleAttribute, mxEditor
Searching...
No Matches
@@ -33,7 +33,7 @@
  • Index
  • Help
  • -

    mxGraph 3.1.2.1

    +

    mxGraph 3.1.2.2

  • Index
  • Help
  • -

    mxGraph 3.1.2.1

    +

    mxGraph 3.1.2.2

  • Index
  • Help
  • -

    mxGraph 3.1.2.1

    +

    mxGraph 3.1.2.2

  • Index
  • Help
  • -

    mxGraph 3.1.2.1

    +

    mxGraph 3.1.2.2

  • Index
  • Help
  • -

    mxGraph 3.1.2.1

    +

    mxGraph 3.1.2.2

    See Also:
    Constant Field Values
    @@ -8440,7 +8440,7 @@ extends Index
  • Help
  • -

    mxGraph 3.1.2.1

    +

    mxGraph 3.1.2.2

  • Help
  • -

    mxGraph 3.1.2.1

    +

    mxGraph 3.1.2.2

    -

    mxGraph 3.1.2.1 API Specification

    +

    mxGraph 3.1.2.2 API Specification

    @@ -220,7 +220,7 @@
  • Index
  • Help
  • -

    mxGraph 3.1.2.1

    +

    mxGraph 3.1.2.2

    |~08VbYkT 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≪BKF&Du$9A6#Gpe;hGMgW#(>)56}cAFGk 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

    4pTLOuu2pT-zHm1^XEYEX2CUF4 z5)!|+I^);5gK^zTWOR*&xnrlgU0{DWgj$8Vt=8K?dvbk_+NEp~u!<$HyJwvJyhULy zuS8WFa5xFglH9}l-`twjb=%hdwfpp6%?pfQy@^0YGzdx{5;+_!P#+Qk7t9{$0SS=- zs4ZlnDy0-sZgZ}{v#P-$~d3NCG^Mx?jCT@^ZHfh z+$!gI0fa%!?+BNZW&bUaJCR)w$iyU(0hbm^ZGFU6sD`Xnh|i?&&8(3vEAD6@{{M0H z)?rb%&HJ#j(hCSI-3?23hvd?Y2-4l%$Vzv|(%s!4AR^r@($bwu2_o-$`~05wdp{fp z|9|$H>zX;|oO5QDt6r+hsO(taXltQlGnPQg(O)?pQ|$hU3@<*fE{nqw5CL)jTv;*7 zMWR0VNAv!TwXcx?RL^T*K1lEny`;X7s%-ADLaho1L)?k04vLy-$T}9c7G%-^5P%O#NNS^sY-r^P|D$|t6E(o=(AUkf!OB4^bVTa#Ezewr4UQFk`@q?ux z1JeKbP=-Nz-ER1Ya{m2L3lsn)!W1lT&n}dN-TsdW6!4%JGGYTw0 z@`4F`J_?HT# z>vzHmQ31*S3_J;LgT9A}q5(9XJHQgq0GUuY7O0p7=Fzf{GqNkpsv*kF0&%|$A`Q`J zl3Hj9cw0IY$hfmflgfVOYZWAIc5oNy@E)lb#rm*!>;)0;{TeQpxSQvzg`OF351(m2$l{6@Ih~?%8kEB=BtY=lz&hpsF|2yt;i zpaT@0^+dP)b7Oru4O}lQS=&w9E3qPpJOvbKyFkbdG(h(|;5r#EnpyW7cs9GQ$kb@q z`{V5n@Y*fl^T&{}VPP?0g6Hx9f&@9@cDtf56KXEoeI(N$N2pbSBdA<|1+dIG~e>a9^zU zqI)CVu#)DF)wjjSK5XCtAVx+C1-__LT#20XQ+I;5@NK>4=HB!ONxxhxTpwka&)b2x z1?4$*5g(PPG*YnqUQx@)Fi@xnZhX(y>~I?h6jZSJ#2?)uw$$R%7gAwQd!=8aEdsm1 z0wn%(&x_dTu3(Wb0di1uTeD|aya&qLh!EP(8zT?Pj%dYeNe-``(ohEvK2vPObEyPI zb8;#*c5<^j(X%`4A3tp4N&sYu+UJ|kGa`zuL!k&E|~Hsw5?$6Kr&$}W>~ZJ1q!CsK0t+rdT!%)o z(KE)+Mh+lMT64RvC=tSX6I9y|T@TYg4i(fxmUcDfgwO}t-Y(aw72ji-vT#R$WOCUu zA?jVkJ_(KO+0IZf^QV~HA}#m=yy}@kBf(#JpYxfpL%MNx^paWwpVdoJxhCJx$}$Ao zn`2neRa!wFPw=XLhb^KP8V{Rzd|oQx-`Y9StY_Lfhj5JBaPAzcOt;oxV=&?*^^5RG z-fG_e4*-*QZG-)9pyBvG8Io;grk;L9#o$#EBg2dnUO_P{hBO%Eu^SGqU;hEubN6i_ zQS(@j&mYyd>~RuisoyMG?3wI+$gtXTeEQY>e7dg_=dB29QG_olZ#BVXbr6O~oiVOH zn_;{6VIe$2DiW~kwz9?uc0Y;#B&Vk&+nq+8k_lZ6hF@^rdok|j zkGmSnWx$^S#0p4a4bvvnLmEV37*6R&!=HY=yrbe|y?E1`EQLpFgI{$J%~Qk!SD

    T!zYD-BLuy{$VBoZTEXh^MUp@1 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 &k;jRT~Lirj%VrxP9zuUVD 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

    -LO%QT{dEQ1K&o@-; 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Ν&oF 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 l>o9sSOq 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 D0|5M; delta 458748 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%0D#l)| z4%JU;YYJt}sYlVCQGJmG6>H`GlA6=268B$+M3^dpU7v@vQ4rIH>Nb?0ygu)^bmZTHS!63G9kw5Mh4n?2aa3{t7C+QVAYA ziK0-H_9-EV%O#GA2y(;)&HUEn`!ZcDRy%U?eMyE#*Dxm(Kzy4O!<4?4F{Meps$_|d z?f#8DPvjwHfwpFKMR`aq4~IBi433G~KB#3#hV=c57;VL%SA@}dy>tJjejC+6t2WoP4ly9~n>)j_DL%CK8+6u~obQ(

    uN*xX_mBBoR0`)uts2?LN?>=1Wr(6~xGEb+fT6vn>Xn>PFu8w6yKusqpI824)&Kwa1g*C4sdRye?L-DovhI{hW!rX5A8{?I*cc{MTLE+ULY-LEU#)t zzsh2CaXG)zLo^9qiXS7}sYpTnOf7)NzxjU%`!f4d7;N+gAO`$nMrr3 z;`Hn^@8Y&rM7$9X`^q}`;Li)Vro9*cfgZa6NM~;Wj_IEM+5koxUXqCNoh!g3-I@vv zrNRX&)gk4oqeMTdw;URtf`zvaC$V^gNm1POLs`4POk)Rqh*UxFw*{Kye{>RV4gmx^Tc)N?<-Pj{q_wf-TLMmoz)Obc3-_55?GXl9C+c7cvMJ ziQEDH- z-2we1g9jSee*L2Ewf_!I(-XmXWF{cwn|)Vwhkg!B*%#k;a5>=GAQu3)>pKHhJ$_$b z$h5*ZKWIhs+h~VP)uL*QR+^N7dyuT;txQgr^~_NeZh>iuS>rscO_sBs&hV702rlhv z`>AZyQ8UNPz!qM#J7vW=mg5pX6vCVJ=O;?f8)AEWiyb~oollFz?qOb5Fu3Rv*-Jn9 zm@}7#;tfp~q9i}8oC@F?L1<$O+@G-?{L8esFED>QYzR7qKK(>drd)JKNpGj2xT~?R z-I5Vg_~()>bVdRiA!H?fy9iW}Xm*O;+<7V&+SwS7G<*im-6;0Y5EeYGJ`lznKr0m(gi>P-A z;@V0`#g0|%vKB$5TA5_F>M=2T`8}^Jq0m!&%1hjGY9JofBJba=tnVYj&uO>79s9sd zs=Wv~mBgdia0=kh;7Q0nR`#6#M*xz?;Q~&F;RRi2?9W6cMwe;ja{R9zOBb;5LL}ox z1r~h5nZMut*ys`=-oiiv>Lsi)^B(cp0ye=ypz;wyVK@#Np+8L(Jm8w*Sk$D>`WVAh zUTHm5xa5YoAzE9(L@3@;UlrjR`s0eZQ#3Q0tnn~JUBm%HCLMI2Y%qdTuYR^8OEZNM zc|pX%*fSWI(7CL~^Ca3NJBy4{DNbnS0)E6M%<%M#K}lZvD)yx%u%w)hr9U}~cN{eI zC-V38!RM`(L+fq}D2X6xQh5|+n8>a3QyeiX_6qcj)96M?XO!o{A{oNZN?hTz6h1}` zkcUISv6KKvtaqr~h3PZU8ew-Lz_ znD1Gb(BcHX^NHY}S|D%2i?x}N3?piFohKfQBX+lelY&ssYrcoBQyi*N5F-73erSRS z+kJ}msyyim`t}cGbiPz1!7|iLNa8bNp=3Wzi!=ZcgGroP5yn!h7_p>6(dC9IUV?o3 z*Ui{oO)C@Ww2aKGT>4VoW5nc9i!8ARB8pAGQ2RsMg>MIUwwIS#3Wjj0r11@#B z`Sw;K;{7&K;=s){EPHBB=)W&?gMTpb2KKsxW)*v-7q`Q%L~iPA)HE!Vy2lU_Jge-)wpMo*#@$7WPZmb=#uH@PT`V-4HB5O_sCpt`gGQud zT%{A*ds1Uxn=AuoB819e*rHWI7SiOav639>9A(l?tzqhvF1cvnY0v}Ln*x(}1d4HX z1)90E9zcc4(uZJvA^)az12)jP-xaR^6hi~xysm$;(zIk&qHp9(@Vu+m>qNx%4;TW= zl5?^v)!OSf-97HbV+MNrqwvrt12c^LE{-r7mOg>J)A{RUZ~?}ZxAyCV#*;V7Emd`tV*OXC2| zI0Dx&6-K>W+YrIUh+9hk+UJ-{^vtR%S^fWPT&yHFthUGk!g$uIX`% z=K{U4hAo1BS%$F_Ozyk=#)&2LxL{lo3bjM20V>S!EAOH-?Z(9XwiOx^Y!3dIVpJS! zl_fRKAScyU;Hkay*cg-ZQ{_IUIvXvGNNV+ai+Q`{&@qcJ-YpDPIr~ZWC;A3pR$8Kz zoT`pBCRI}_YRU#d`)Y%>d@60`m^gf$>D$+sQ>&fzMgrzqGH}q^u3Kf>nplmrCU~Tr z54^CnLBK9$+vYq;1fls;<(PXp_AaibL2S6ewQ6jb>LkgRT`5@La4+%~q$2f3hzuXB zG!tYc`bw_!A7La2LR$OB&oNa1;}+^?gd_VbirE*N;^$<1x>{8uf6I{+n26>kg z48;9ASI|iv@rzB?Da%%F&`6z$Mh>+f*GRe?rz4}|ns-?4$5jE40=^lQpHp4d$T0o^ zi+3@QQ?W#7Z~|cnsq0U^AdDWMR(Dw)!H!^+lI0mb!kCIO%>!iivkWYNe$xW-7GwB3 zd2i()enM!hA5AvURAg7a*Je4S{6Iq}iGX;~aus|`eRYgPwk9Ty(MoHYi;~?KqwEju zQ9Sw3(^GSMQ9Ak2F8v{v?$BM9#+e7nTXACJ<(TC`$KEDRwljX{%TwP4;b)#}Fg}@c zjQI|l%D219r?hR-xt(0VeyV^c7;M%0{KwF=GsprbgtYyfw4Nup_%B3tB{OK(CyY8e z8tn!3juC-a0D;@{$C`{h<`uVHMK9;4Ewke34epfIVsgi}#N6+{!6;kM85)Y7PY?Sa zy9D*zYdfOZU!!taf-Yqk8>0@@a&KCZmC{%HI(q^$x)`8W5N`BZNn>6H< zN3p7)Qw!7`gpEgQ53<$dBHC^UeF9JGvPz3zPV~^ex(`ZA;S5|n!H)9me(=o?`gwK8 z_30=JfHWV7ZJvlB1P*L1?2a?uh#Yi>XL_NozXI>Y;s`(kvc>pUq1MT!=;{4v0t~Ib z9PjXS21B1$WDWPK)j@$Ch~NY?$8ZRQ@_&~$+X#8=QOE8UXZl7FiH<8T-8T7Uy{}T(_z}{8nNI*Awjr6RR}1c>L(W zDDgt&*UVE^la|2|0-w<~+X}}S4R%+Qfe!{({=Qn`mSN(c%?*J>Jy#&=^`&u{jeYhrU6is_K>8k(c~oH5}0I6i_yBs z)hqGjF)cFr{3?$a>CYNl{AlZ9wnd0Pc;}f)=RZLcGC?pN;i?1q)U2FDTCzv z!-LQ&+T8?jTQu{~^UHkgnR1Loik&0yrS-=FG}?p)ORs`i6NYLNMzonDrmhYK^2!YZ z4DTcx0`NuUX`zqNE=1SuD!rb$x+u92T35FG8Hqhlhf^KG;x8hsd%;!WMcSmU=B}nG zQ3f6;4e-hBluIQ=X}o{DfTB0hcmwa)tZwR&G~m3E%4!>@7J4l1P929MDYKZorR2Q< zvXG};niIty`5JWwXr0C3b2#%oqx*d)hu4hqT-!Hb@$Qg9`G$xYk7F>~_mfj(`)a~s zD3)*)w^G1e zS%*SZ#W9gSbu!#%gWe1sEp7MMh3jo1XuNh1^ZlAZ81VV@6}U2KBjlMVIpD$re0Q>c z$yY{ry+eEwp%&x9i$Ut1CQM$eYBQc}Y}Z*Z9g;%?c*o5sVLsj;=}Qj4-_5`Dd?>Ju zxxag~usTl}sk-w<5!y3$&I393`g-mR~#E%_+o2N^1lT9Ahn=RQC~e(H{g z59s8V>Xb!2zpySTnRKh^occc?Ecd@3?xS_Ghtlhj5$WxM>$>` zk2&D&aE&>H?K6!c$MB6R#(<16$1un2p@98l<13GGlaLwzt4Xk+TBq}o2k=Eb%F}?%lyyr>uMw4_FLwMf62eezO zzYrdei*{_OJ0M}6m89$~y2;7Ov1<0<0D4C77X$sbARNqFcQ zREku?o5JZ9?p-DU!|OH%p{p?bzt*T*lsLnxQM9XZhnK^umt+mkhnCO7Rw3%6J2b5m zS53P`ts_^-JH#%O>KUqsJBC}%iVZi07#6AxQzLcrH-Tc_$#yB4n6c1u~uuIhCIwCHG-OIN~%hxRoeTnt zedVy5Ub$suC!rUYh4Mz^gai9&K&qG6gD3)Bg2MVCgd6)Q22cX&gD?W6q1W>=>lXEK z^OtrUg)@an5Dn7%T?ZTk@q=6gvx5)OvEFwSK_=r#2$2 z@l?t1?-yjZiC4^|iIrNEfMz|d{t=A1IDJb$!vX1gbhXV6I%7BDOTd}*VgF=ctiVfQ zR3j{m$wE^&=;P=gI_$JQ(4`{hHPrTA_zN3 zlrR1UZB~>owa#A_nUSn0KAtHOX|Tz|RUg_wv`oQBLwO(zy>@w{TIIaVf?i;ly@mic zLdeet`uf3Dd|7r_z;C=9dzoQ0I$BrNIm^&$k!PJ$1fFjhkkOgc$Uu+MPaTSK09ptx z@&QI)NQZLNFc^2JE4-MPRlxXX7&Z>e)*mMFozGJ)UOwYLBu{tkKKz&u-9EOzW`ljY z+wSFK$hF}NLx%-)gbBCnY7r5+zx=tJe?Pp9LrC7z)?$1C{qIvN*EMrJI+0OV4uF=5 zE))@_;6SW0r>`38mK;{GVbRGpVgb7zoGryJNCfd4b+-L7T_Y-`O5J=rm4j%_f%edQvPEJt1qNI7?HgnG!_Wh zcf;`!O4-C}kGKKE+sXb#3LBusfKk;2?%sCPn(_~dV%m_YdPjc2xC#%7sp>ybF~Hbr%o2Gb)v98?wOtyyZdVgJp(L)wZQtQ)=8tlf1NUdUUf$D8%y2DVF4zqn)H1oMpK2TG0AcKoX`%Y3 z(Wk=xy53@?j-D?YT#+U$PXTrk?4}W1_=&?XuprmtZ%-!I)5f9kRxk|?+zfdDl`wlS z+dMPQ^lv`0)4Lg1jaT@1%Anw`k(VE=;t^DjMu%o~+3KQL=~OaVbi+~3w`zE|@Dbl70T8Da?FXtYP_unYO3IKm6Y2^B8uxsj8Tvyro1dmSqe z1UdE-sm~crsHh;Vzbd3DBq~HKL?bqHZC$gO1V5En*W#Xlv!jMB+Nk)Y5E2txIP`bI z6|x8gXG*=-G!oSsJfI)xLQ*_oaVE~fvC=|kdA;BYy>Nr*cGdv5TkaA z0(l~Dj6GID;TpSjG}Tj)`-|$N>)T-h)3nt!e~V#QEXc-p2LO)z>W0^$IEX7g;&%ju z2(x;+{fj#nepr-KRMpdQ7Z>XhrFkr;gdqQj&+PeB(TZWL6q!Uxa9@JttVabN;UiQ* z(14>tjPSxX7LjmqG=CCpmISl; zkogyRB()IF_AER=$Jjh(@v?T(S{S2^sRv$fwmV(7ALrcXerI)ly$z@S1loc5sDijR zPzYSJ*8&9%X#=?Z3{GXc>Cb~1#3}pG3{GwL2+l;d)jJF~Ykwt8xf$(xsr-1O6nas1 zmknNFPn$vM8Ts`Um04SPbId1l@r1egLCy&np5|juq7H3Tsh+`ymy$xT4lu+$g->~}td-C%6nYdwUZ zf9~B!ZuyN<&J7~)i}(xW-zue}qhIb9^ypuzfey`Go-yLyMh|O0TnmDaM zb0Z=kv=sqMbFuzFJ_`~U5bdRv8dd$%bVsIHBc$Y;w2wyEv(%K*yUv0$`r#0;nd9A> z2jE%N1?9VVS(BvbzEuzVd{;BiM#+SjFAn(;kw`#7c5)Qe&dMYy;~LmO>AXhi?#F7h z+09R_CWvHJE!I3a7eA@&+UZ+3TlkQrT^Uq5=TFrtoxN-CbFFV2HO=Ql24fBb;9tbNIaiqTPVp)ga8McjrJ$?&Q7!M0yR1Og zqJg4Y);1p>h3EaJ=D^};SbKw(`9R$>gL>LbjB0>dO)*FfQopGhh+hr=`w|>fu3sc-d=2M!4LPjN3Zq1PkiW zp`ypFEOj^LZUs~6dOQJrlx=m0@1g#Wkp#4b?CL(qR)HBqxEs7#Zv3P(&%i(z>~vJ< zGJza>Y3B#FVf(FU1|#K@#bMNO3X3U}?m=dCeEK0Q!Q~w+fl#Q{1@`_4t$xMfG6(i@ zeNb=hz%p-bfAi2eZvZwP$_YkRX+*MI@J^_J?i+-O$9`zHi(URl?&GMPoBe=0bW9o0 zz=D#XJ)Y}8fp-hS^U|4!izuQ~!+x=zpcOguvJFEk5%|kO7~qzC$P1czeL3}9QZr1a z-A9Ol#`|o{af5jL>0ej0<<=?77 zL8&>+rZKMGLaUitB5dye;r2@Ky6qC+88mNBamMV6WA@?P8xNI;>_^3werUkU51GGk z=h!7R>U&2l3J8O8(*{c=)~R15A>|;r8T@cR3+d)19D#CMgYuObyh~l=@V^sJPhGha z@sp1D%l~2W$sLxS`Uh2G@q(N}l7OgRiTOf^=PU89Nz7}~jT=^ptqIqi8+7*km0FM! zGUz#+c0orlE`NTXoL?$+2HVEJotIiaRYqgDQ6snh2(Vzke7$BE1DSzV`OJ%62XAux zyFO#=-)@gM-JgW68n?dNiCs<{FICgWAy++L=0j5-7kfT|?a6ib2Q0fu3?uASpVZp%qAe_QQ{-+rkZppR~FepV_vnotp7p?ud|272*aiGv4%UtvG;c?YqjM4tY^l$Y%!7R zPcXap`K@PwTZXK((p`rc=6n9V%m8XNy|MFp3A`$F;ez`m7rUd4O|QEF^@GA?_QopE zA<1d#PX6nF)1QB?g-s8V?d>w>6kpZMW8b=#9}`zo0Z3y*26_inuptFxLEoY~fSxud z{ga>bcsEcI75C@a??z|5?)W|)3cDZzwc2wUf@$)&(GMNM$IsNkv_ z6cX;?u)k%ESLjY-L!aS5i^#zB^<}Uu<7LWM z#Qr&9Q#xip@wdjs{s{;`n}+3`dLo21jOM{D)vl0FR_Ju))jz?&G_;$5tz8(eUUpDH z{_r(Bk6q50QUv=taY;R+D8#@N#y$BF2##xHR9<#>EW!U0V?{x1bYIa8+?hCwdVE~Y zgXD+!r0Ubs{a~Bj&3)u!DpiM^UKQMru-WC30@3H;<2cKqadf*Ya08OH7LY0nB)}p#Hm<0e zT#eU3ri!Oy1H176abwv?a$ajnXgxpu9=|4{i}rv@(o}%}-rk4}I+0!wR}JkLEEC*H zXQsT6h6m-+f&Q2}`7p81b1-zW89}HXSLRcKTa14z=|f+yKYNdi?1x{T!ZIpu=)#IK zg8;dpbfzEV1jQOV{Ngw!Tj4!3_NM$B`;>X(966`xHt`hT0y})2eK5ANbb{z4gLXWd z4;rITjR*SSNXs~2$?2U!jUc#^^J1wNQe@HU9m+%ms<%hcQduD^hXWM`JBaKMQSZkB z^`GEC*q172?J%e_XIg&h_lTiA-9VjF6U=Yl(SLlPYoD)h$v4OfueSC6;&{z|5(jE$ z_dT{gCZ`|ZNu_-yMJygqiZr@l%m`#SMG2Pu6GZ9cvD{3+GLW=~9P6g+#vqoD}0gt9i2(Ptan+O~8&rLx0QQ}sHDzuRQ5VL^B#)5Ws z;Hf<`n%;88ZDmf_(Iz0CJs|$i3<{NBR-%XBBO(vL>4xH$VW{dU|7k(8&uKxVkCw^} zKD|#m%J8W#xo3}sqJCDhSX~=Y>7v;<$k}6CH6VwJqEDyk8SPfa>dMtT6GUJULS)jA z)(AI=)S2|kK*$s$Jq9L02;|d-kuRJy7z+575L6@v-Fq4=8(UTC` z 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

    v~WGi${#w0wvt$i&NWkg&e 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�GbZ*P198rX(EI$ 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�rz@f-At)$K> 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%0Dj;qBtoc|Li+rgu{dR9RDHX6-KVkSgc78p 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 diff --git a/java/lib/mxgraph-core.jar b/java/lib/mxgraph-core.jar index 8f8b6292b0861e5352a03434535ec87ee66e39fe..7c77d4359f22d46e2e33a7350aa34b5661d1cd46 100644 GIT binary patch delta 365534 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

    u>}nky9q$x;V}n<)T!95t&Qea4=Q zSw@MSp&{uG#blVv^I_WwGTq#l#Q9NL+1!^V`Irl+Bx5|&zW1m7xqJe6bq%Bo272E% z_2pFS-R{$RXZ={wJdu{0e%tJR@|_q=k$U^nOw2vzxSG*SzJKQ99cp9Yh~Oc zSM#6zTmcF#7`(|J)%-rw--9%7XAnuGR#&K$s4vHX{*yuqI-KwV^@z8KzCQ52H5O+` zT2Fx7NhS;VeAdT1Y8!4g_P=F3BafjEnd#%{?P4$J4PuV>-jG;NXHnU}5G0_B9weBAwP{!wM`GWa6#7}|CaAw4=;9|d$dyOt^J zMH`X92-rfrq)w^^o_ZW!4-xFH*?}qR6e*azOn(hwnza9K9b*{g94#HTr%Hg+gXTeZ^*A_dO5Kjee3cW{mg*J zTa6$J^OC4F?|V%>O#+m3T$(7Xrfg{fvPVq zg9RLL<66jXl(QOskG_63Njx5y@o`B}$W0L83K`;iVKe-V1vM@wV$Cz6Tt(LGg=j&~ z%q}Q-EPQ)&8_Z3zwmj_NlW4}jE!sgThKbg$ZF)1bAOb5c! zP)2(A0dCz~SHx%2ZtDYr0yL0jyV$0QHFsc|jJ6oz$oh86JuI4Y?BW+7cOyPqe)ohk zgoCWG9zR^Lij;hb5w9w1tPlu<_naOOy)L@W^C+_Pek7VI8c8$vtq#bzxDddHTwYVe zyde0|vii*e!`deL4q~>n#&LS2Y7!Ec3@mjLBVq9(ahLv`!{H8mv}io37zeciyp2Tf zt@C9R*d$uSp&E$kGOV$#TMnJ_F|~qbbeSu6?+}>H4Le4lgiPWLb&v!I)m*v5LA{fI z!zH1r*_QI9X5Sz1)IdHq8Fm09*s-OgwNQkld_$DudWa*vt#eT!lh`4)aYCcpr+Em( zJ9Ezgu3VxCi%87!n?wl)@Q`g9iT*$5RXR~haP>_2L<_e}D1|P|)r*s}cSc1wpbY(L zuxGh8MaTi)LT4NSsZ*i~uygE;ra&GcOItScXs}D_(U^I9hdJ)vLTnZSV?Du{V+ATRZ=t%N- zAr1bWm6-_Ll-;S2$P75A3rJX}lzKXR+l=@S-LLvL*SnPE|9~M$W)ZQ=XDaQ{a207% zw}Mno!!Ho+0N|l-{_a7aO;iQ+QPRX8wT&ifd98uAv7;BeA^f1AQd31ZF@`&pTT1Ai z1Op%03YPA3X%FvhEjBxddE7S1lnOahhY@>@S8|P>Z%49;FaT8bOrPyak+ODeI6Y2{ zEe#x7*Kj=|cD{@m%L<)&067d5FA+P$55K+}1l94OeBGJ6V)HuL@%nQJ5lnnT8HTR| za_B@2Vmf4Gi2uoO+&%1K88kkg8UzvF$qQJpG^%hl0#bh|o7{11lo#2hP_>vK}XDUP=&k?6#~>+L5fwCnma2RP^uYDT?U&? zS1eD|a=diHV&dlbEH5+ySKIKzcP(ixv;PQem9%qeGV7tj?wp=nwF#}*8`StDRc!@p zxkqVp{^2`S3okZbS*U7?fvXVH%&z|^a)PdF=M(vLykRq;K<{=EdF3OB@7*T=NZ#U` zu+KBgt^vf`JAHGz%~Pe?JDEkjC#e@wK5n3=cyHIQGbMbi%!$0`d!?$22yprfa*J)3 zkNXeL^u_qed@%$QDzucm2Brv9d=JI8n{)qIJrIf9rO9#D(mBH}Hac*C>U6aAn^aWSbo64Sgpb{R+rveZuJ28=yEn z_dXCp=mP7@CV=MN4rw30zq0OMhRsm*Lz-M>>{q+_o%uq}2}OIgJYdP5C}E)vMy1sR z_6q<}Pzr=kCO9LF!r{8T-m>nmM+p7lyTZ4fEsBcpT-4P~rieo#=6wd$DRt&>2&_31 z(1Cf(%zQ+w5vO(9+_8>DWklbZuF2$6%VQgw7DO=B5wr&k)1~K5A^_?QF*jU;2YTN5 zHhI+nkTw4<>R-IrhSTG-*Nva2H(GexE&}kD>7czlmUHg0&^E(mgS5c7CSiU^SSM0e0%)&Yu8jf0FGa#DQ3$LRs)!25Qa3{#>F0f%v;|sLey%(fOm=e?*uU z((DLCHNp9Sl|=0Hc7*}HfA|Xp`2k>i|2kc-;pcR*$NWYyLg|T~&68WkNiE=QIxq01 z{K)kHda2#LX1m6{cRX;SEGgN#Mtyl+A#fSOrd>g3ODz3+TxwGsg3_Qm*9z!%N%+or z)*MQZ<54!oQSJ+O2*_T^{-ChYKzMskRonzrdN^ z6=#h_Uht3NP8G;NAjOiktA;pWdGd5`|>L=Xr%fvo@IOil%a zIIB&3D?~({3Jc^SA<@37y1l9nf!5e{J#@x+=qFZ-8YX;}Tc(}4=*GAlMWfJUB^kfE z4sjt#HKFqAlC8EHm9e-?5agSc`v`42aV3k?c6+nsifEC^m|En@JGEt1mu>;Gr9;<1^omiDg2}B%N9d3T7L$VN(XOE(RPclwHD&%gMDaDfzOP z$>NwMgLm&cWC+Cv$;HPIZoYuQ({iXHp0Uh*y~8lmm}-GJdJRgxpuquT6U622keA$x zM#%<_LD1nkf+L9k`4|6jk)Ndz=1QM{1QrG+P0xn|rcdXB0(SYYh-oS=KNb6*!yzo# zzo_W+1_)q+^bIIrdccScbSe8EUFlX>tlU|&-xWgwrPO5*gY$uPUzp#(zppz6E(a@d za~>q!yBVWE(gx^u{a<@s=lJh>vklModOJdd zOr<5@+J{}TO|{qQA|{heBki={r~GG`3QuX^R2DWkvAt&8VgR#AQ;Ev$)e8F6ef6!e zr?|DInRnyVS#3R6ICYh0GH}kD8hgLuPHj!+IJh;q9@QiV$jZ1h&}$A5BFc>LJ<*f> z@`+#w_KC+x!4n=rf#FmmB*y0Lij|i(QuY>M#IZ3}wkz^{ zra=l5PTzfJk;v!9aX_m54O)fyx^+PAN9>@8R$mu>I4^>sx zw%jhv|LkRvnh$45T#Y{)#uBqr=9C}Hxx1QQr0m*mnDg>$}< z9>T09t;no%DIBxt;0Xq44f_Rrfx^Kof{#ptBPIgIUlXT2kuQlE20ku3}nED)6Of&azR^)FBobNeH`7#6q!`9HXP>6NiA z2Lb|`|F<~Pfsuge(&djJ5TJSgIIammKtTK#trh>>tI3H>)9H%vz(#-p%w=K(O?E5{ zRJOmJ4yDy@^c!6Rf=mzX8Ca+sn1X*nKb1#aWv8GHLcZ>ET;FqCZ~x&E@csP`Z-iaX zGJfEJqpF2g05i`5))mN$o$ACH;!6eFkzd6?^a<8UHf|1#2*!tYFEwBaP78O@=6%25 za;?$d4~NWafT!s8nFm<=+{e`zvd(r$XW_t7sg6Gbvpuc|Z!ENDC9@4!GEuUlt$5R? zp{vS<@6&f6T*r5i^A6G!n38fjI9K+jBHS<{PdwTd7kUIG#WNH&n}_4Z`s6!wrOuZk5M6-v>j6|W>GA~lmS5|3i*WKn5@$4dBz-P4GZ zk4q)xt^tBCP(jI_uYr;o5EGX%TZzs184;7-ks0WQ=<3AN+^bT?>zd!8q64JTA`-9l zgW`~9S7b#?EE5+Z_6;RE8hAxsuAx+?E^At!LV{7QTM%ijb#O9JLGOyX7 z@rak{a-#% zT3Q0W-@ifoMYrpP4}IR=c$(^?VYQ4qlu0|Zhv;iqwk@ofx1AeLP4o+RG$?s_;=?tB zLZ?kt?;lgvhhHiKkHQLn6bhE*A$0oVT5bRokf{rg2Cpg3mVPLuHh^{R=s(O!bp&y{ zI_7^&^U*M=uJ8UVf46PoE4P+h?s_kIC!}0LZq9n_QlX-2hoMKsbkH^ib`6sZvEVS= zO1CVe-tWtTttYMzhxZrv;frsct8I|^1FYUT6yS2Z>0T;Uh_D^8KS%`8yzci#&e#EN zpjq-?Av`L%$enl3srZY}i*k8o=@bzbLQ78~Kj@`P!%s=!(0agO^!*hu|WkGC`QBW(PPuf0Zm6#>2Y%0e!9Cq;(pbyc=OA;(|+A`4R}3qpX>YW0h$rgm%R{23tk6fLS2W^ z5$;{v?>>D6?qIY_<%IfV5u}^Z4zoSlt-p_OnhWB|e238y;a%VFKm7qtU?f0wkMsmE z4wB4BfZ-eU)7ytWO#xA4&d2Zyf2-+tojwEiU@}Bfn#Ke-FzKahNO_Cyub$Qisb@CC z^a|IWd!MC0iXi@=Dtaye%lQi0xyq{0FTE5TehOo@SNyT-K@Zz zYmh;d0__pBWsI!eS_gtoRF;MVK$s#YdNUK?58i7D zLvgM|_Nz&km1Blo`9uGqG4e!n-Tt5sK?mvB-J)gGgBQcT+-N9Si%c{G{MRBO`$osS z98Hl&(b8;5$3q)dJDyy7L`s`ro8!k5$A_#>mkM9{uLK((tt;pc{vWN}75$qzo4GlT z64o93tZwdH+m<^h#s=+&*q&4XkAp%PN{Ks#MY*+@VY5FA`z&KB?5;Q2W6MR1wYV+$ z)gsl?M>LPafr_3)f-te|0g0ZR`Bz$2nCviTMuV)Y$Qc9bOIG%DYuPi0@4A*&SEGQ=aNn=W*?__ukW!xW7r8lIsUw z`YGc@bm5~`$#l}gw(aVTXLxi=#o=6;c;zMNqXThz`7}-KxD)YJ5(&Ep2q^|ctFWk- zPH_-b4BOgZq5$8ehD;qmv-tU+Y(_T-5_grS^hseQ&K6m66r>HqAr(~hF;6oW7X}^? zu^rCpLHC`eG%<`lr*>+#sX-%ukP~^~vi6C!nZD-rq-^JN8e+$P6PJGR1=l}fuDLIC5mQw^ko2wlUr#8+4d<0Bd zqPHDYN$Uk&o5o~Fp6Uz4g`~iXiOe&?e60~pPfync;jkRoTM#+zxMKAw%g{+Ue>g21 z{*b|tz)(%0?Yd(I>ohI~93-434hFnzxcN}D@rqNL@r={_JS!fHo;{ZxmkF0m$EZ{7 z0ngCCtU)+V90wM_wq3`FQ}qGI&`p**)V*v_FC(QR3$u`2Mk8tv{(eF~`p44GIa!0| zDs^ni9~k&1`EJpe;=trQiD3|0xGir2%R7h$(x^gN!5=3<_If6Q;P(GCd zD({v-=0~lt%15rSqZ4Qt%E=Tog)9#n3V9U>wW=nSdU z|DwpK+$Kg~WIv-G{*Q-4KPABgH#iW`CtP}=2rxzZ-Z2DBx)&xeCYZRAE?s&GCa^HT z2{Pch2)FpAV=sgVp#jU3dG?SfMw9?=6jVTNAIcVS(rX-+P-4R?qg7JNH??)FTZw7H zLPlaUMxla*;MIg&ZPap||3nl+(w{3FFQz*-7|~YAPI4mVh^krHSpJAhols$)EJV?{ z!+JGuKX8d9FZCf6%u{C}wXg;3=Uy3b5{fcK9VTZdM{5b2X#maQ`&zk#!dHW@;-aoD z0(oVsDkCkAv1Aqzp*rG62cS{akWp>4V=kk8!?TBP;z+J0ytNmjT+Ccu@XMIL#orLo zxJq&2@UkDIziA2BA|a^$NCZ0zG>BUnI56QxV@s2Hjk`bg;Q@GWyb+IzggWm1s2Bk&+h z9`El>jP!DATT7Wz>B z;_N~B#oU4QN~-KbPD`yj^$cftcDeOxd{8D-Q5V%Mg%kVCVOVhH)Xu-4;2W+qb!Idk z#9RP;#D)5_I1bRb^{;r47o8W_e3jJEYS@}kOO}Gy z*N=?=_E^lX#YKx$akv4oDy^(MN*b&dK`V{ISt8=CX7@u4aNIA9 z!q1It6&h(9S${IZ!U==AG|WAN|Ak!#8-3bsP?jMpezDSfftIRvYwn%q(eNAuwnAGxdpcM~lFCjjg`~>SfDC zZFgeCt}XZVh|at5vV32@p40tb(wPBNCBx!V8CNAkYqZ5KG?bZ=TCzK`>V%h_&ktHQ zNa|xxJ+W+t+%AAy*kCuZG4G^BzdQ1+QolFyqxU`G*rvsBvd_L4@6Fc-ppl`V2OY}zM;SZ_o|)~t~#pEa?9}z{DbZ` z(IF|35W5Rty640L3{C-Nyf&1B%QUew zzykgGKibSTCVCOVe`-5CM4)t2MNs5)CKO<_^jkb&VsTyc5gF;|R3s`fYL7xuEKxSH zj7%zz_K#ji8_nPAJtF2QtM8rV3WK>c%?UGZ>Gv~PjM$N&0$}V$%>)E;MKb46&-zp%&zr@#Y3!| zS@TdcypH8C|0rTkWThgEM|AM_?N-eSS#t|KR9XwXlzJ+_Jm%;`dRmqwC$X}1o*yz* zSIzMnSeS~t@};^!%=GrO1MCQU$!TIOI1vcowP~8Qpg%0wjun7%{tqeQK z;>abGS*9ldut4fP@|}RiBXo*lW{&wIc6I>60j!^Ng2W)VpE#rB;M!k_!S=uL5>et4 zAghe!ynf+5D7})|p@jFvp<4~2gWd|<48|aW3(Dkr{UxE)a5kK$bm;9j!UWlQh(F_Xx1j_G8Fg$JL-o-T)d$M zV=hLZ(m;2^27AQa@#IoFO#`b7B_#kW`?e0(UZhq{P|Kqm*&?3a_K6o`g=ojoY+AAV z){Oq5M6-j1fA+Y!vxZmZ_udxr)Kpw%i)?#t2`efSj%S6FaZ_&SpK`E4&v=!%c~esrc_TLL~1 zPOLOe4K#Gr#>P^YL7eP#R$tSMJ4^x?kY~>Twol{5#WFS(X^aXHIsw|q@0$!&YM9Vk zDG5+t780Y6MtYmLH;54sB1uNFii(W~JFKA|EBQ?nG-Hpm@a+)G8Y)LQ1lAtYZp67=H z_VYt(0XX9SkE?SEuO#ZWcImE*ac|M~eeI=j*-LEJQ9MrWa57bl%?C+99tlNja=7>c# zOH;E zFHPmW<~**NJaH7CB1<|KJgyo&y)rMi(k_`6KAh~mfG6ALCzo7Xel=TLrGA)ivK^~i zxd8VW&@))nn@fVJ7V3yluJwwtC#-9oBqyg8=M(5>m7U$B9dTb^K^|%7hOMCZ_byXx z?)BL*?NdsFEf4&Ihfw!J>xLG%p_JRO3F}P{ySv%PzE7NGv`TJmO|!(~{ug@LS=wlui)-wNqxxKA>V{SrEMp5)v-PsqXAQ>zdP0Vk$gc;<#J$awZ%y?a_upJ(J`IQI%UfgMYBe6x004xwuDr9oh6k+rctHaW34G26McRCGDg zC?*)wFwr3#HJt19oLQWqs~%vy7B|Sjz^Th@UZ&a3yy+y($pgd=-IuK?kURH4yB@Z`wp=n54IQRL=hG1qr4&J?+nsEH$;Et3kg$F705= zIVFr#@Ez$GAi651juW~n#?5bdP+_ST83{Y?7kOYWdT06ILHq?Uo;Us4yaw^Szz3I= zm%u%@e`~m@xFoXsLS-3-3>I_;n->N%iIv5n7feWT7g!WU%sQGA6?o~NK~82(t&nPu zR2v_h?c(FNj8NR8^EnDg95>#u6jkGuPSg&_;WlF9cnqd@r#6BRIEp&+#OGA*gNX z2CuggT@a!Gk+0HJ|2CjFc@!%Muak`mHl+VmM2(%57Of`~Bx3W0eYEk;-~QJuf49-P zo7GosWaU4#kuQhZ+}V-Y(c9Y1)CI_d4vr0+;sl2U;l z($`Z}Ur%xW@7MHoBR)VGLljd`ymiY_H(y2MHK<&}F-Gs@z9<#5o-59t+f_b!q^!BN zxos;+EpmutcPEh&t!VE0Jb`T+@3BD9yKkE6XmYLH{b+Kl^UKSAMmB-Y5|zaR=r3y<|3ylng?3H;nup8+3YqnVaW*Ce2 z5Euhr#MGJ2aT*;H>5AaF*WOzXEI?EP|C1XEo6acl-y%3tEGBj0O9Zo^f`QTg@1M?@ z2OJkbfe@`hYQlyg^WC8_uF#+_cmkC}v|h*hdbd+~b5_Y7OyZDK zjV6@C#VyXw!`W3AG}UzvSN}_o-_=$2+jM)c-*o#^_sgv?$xjFqqEDh>tH0!{p{yqe z^H?SPgqBZj`8RNKG|YWa@o;=}7^6@`z{^lTq;hBjW$@dL1?GkeTWr~Yw;olVZlE(r z19NA@Yv{A{_WY^%ttV1A(gZd)_2?(fv2<`Q#=W_yFxtJks4&L8yJ#=!y}W2I`h8bE zjs*y(2vb?A?N#2ii(&tS#VGM+iNz@SX2rCNY2SI^xhA$3asP?#Gk*^m3!ni8t>+9V zFp2m28>cqLP{C7_fBMVE|N7a~Js~jw6a?pEdZKh(YvSfLK$&}T_&dpdWk4Rfyh*FlE{4QmkQK9wENCAXcE`wyuT zvoUhKjBBN2kZH*vGU@jM{$ysa`bRwIHjGyE4x+Avzt-OI6fkns4svF$77& zH*<$YHEV~auP2jP=2is`f~uT$X}Wze%d@R?FIARxhiwtIMkN|Hu`4 zYz>Epzxbizn`VWl$h3JNOF7o$+}c#A)mxvVud;Y;|BmjvvEg6iu|DK3Rv>6$G-iI7_&hYnWTvT#X98Hq2hI(UA5?0x zKNb-aFUx20uz%)L!(X4R-E&0#LN;m*c6uuh^7>f8=^`INE6Q<4L*j3bLL;lEA2RZo z{gwY)(PZ;1;_$E96o#ZxhQmKJf%6?Y&xVDy5cK_g-Xl z5RQlJETt$A+7R1Aau!Q858)LcCi9NG)x{SPJ=|rB$?2&z79O!H^oDZhW zcy=8wxDwp|1akZda()NUdtf4#G^)}pG}m$W7fno5b}P(?V^~@NQjY+n*F1u!wbKC! zKP+E;s1f8^%lL?R+UgQq^gsIM40!zlfr^5>OZ?fV?!&$j>L352Q?3$?YE=nIrmIZ;mE5{biWcSeGG6#jiDU(ZmwxAa{I z)juMci{?W>MtXcIJ&3%Rv`EUiu&qST*y2w%pkGa$Y;uS0ZC3i8A?vko^b^AA@W~og zs9i16-|a|;ypG8J+{401i15eH{D*wtM@Y)D3d!F#fk*HZ9e)HskIn+-d&81C+)x@+ zDQc`M6$kW#z+dW?PQr~XxLN$;W=CqYT+t!e8&b8!q|yeFch%+WwLnh&gGntvhD3>R zT{BW?$rhYWu!n5+9I26v<@O#HIQTpJ!vOC;gPT{GPv(6SUq2|mwU_QwUVe37*C+2x zScALn?L+XDcYx{n9Scgw;oD6l&}WwGX{>WNL-=&^YRNt+xg3jnL8tAoT42TTrI2xh zu7&E11gTnXy+3XC;V&M;g0p$=>gkWFm1-f0gd6v?80Y%Ba9^x5O#%FryoB}9YsHA6 zGX^x_QT55^LcGP7Ur8p%oC|Fq9ClecSY$K1--KyGDFL%-DmRN{N)qNt{k9B`nbpy2 zS^94K7MjT^Q%INh1t)wv&~OIB2v}14^L&-h9Y6l$T6Kk~XmP?B4_lS;S$w=}+}#Zo{1`7t&5;nmTFKgst1T_+Y3mtD z&7y4`e!$i?l5eN1t#d!n8h;vkc&P0Pa&t7;IR=c-8jY1B6jbRHlW7m;Nl^;>5(-g9 z%mnr%s#eBzF70TlzSFPmIoPjpH8@(I&1R{oz1x2+Mq1j>A7AU?YsGONRFpJ6x2pM3 zaxSPEtV+`WX*K>e?ocQ&N8gs*L%`U>r{je1uoLiz*sMx-wtB?tHD1_L4qDc8}F zx-1Q^BZcvyooyN4NbWM5AI}7B|;$CuO27SAqSsi++D~J-i`@BfaCK_XrBPnWv#JTYZz7sF$gzSF9?gMtZ3aVu=71{{3mj5|}u+ zVvO%(9jIuo#N9|YzX6coD3Zmjw7ZFsvXo!DU zkg`cJm|vnI88E|lqu}Jv^!2vQBD0kmWW-BwHG@lpS!Ytt8-7=EB(Ak{hPzY^^fvs< z{vK@WnR%g6=B1?(p!${OJv3}yLzpyQ+h<|^i8-}cqxhEhozoz^1nY&x>I>N2mzZIR zN^3VxcKVPhi3hu3<**=gRVOU|+uM&P`vAY0!!xsj)Tt3GQIGU~ffu`Ua9Wfb8Lb?0 z<1{E?2BSvMVs3M8TC$O;UzYwmt}s{($v}fA*jH=RV;?i~#S!#7~}el|EyJSy7k%qlkp zd{;O)U79sY;_!y3``xo)=Vv(a3Vcscf2scJa!gYc3enT{b*Jp`X#5hwnuWw@`BgZ< z&;QECV;yWfs`#qZKmbjZAu;~fkL*2yK>*Zfop@nrV*XR)8?(s3UWee)!Lg8EH&J

    y$x*w50d`(vHp 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%0A|CSwQPGB8h%fE>dpfe2QygZdRgF_J>{M&23N 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

    3Mog@J`R9&#} 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%0D2wXx%VA>+T2YRg6WbvA} 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�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

    &GM6;fGs_Jc%#7BiM@L< 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 delta 365621 zcmZ6yV{|7$*RLJhwrx(FOl+GI+x9=UZQHhOOw5UGJ7?}W_j%v*oDaROUi;ToUA=p) zs$JM|dH7ek`0xtSpkOdSKu|zHg5u=y@KjJg#mU92CD{z)`N#l)OlTs{{vX0Amjn7V z#f#Y;NK!VK;H`%lo6CL_39F%iKN9(|hf`dGD*6xLpIA#LT`d$Q0i#LAN2TKsar6yy z;BAM{;~92$^DtBlm;^Hk?bEwuP>^c%4e2_L2^ zp??yCV0-rVK;@W}|E$VQfw?a?WYna zPecMH1pNc4jlUb`pW;PvA_)f)IMOge~bdfPi2AyMoByahWTe;1)=#z zeGry^j0OJt038VA|5MKh2+u!R0+czmcLo9~kq;E=zXrj7i~{BQ$1zZWf6N8LPrW$@ zfk>nW``<76PsMW|AdrcA|20^FG5_~T`hT1Sqx(l@aFRqKaD@NfGyPY?PbJC&2mk+C z1qJkoqY~?@o3ijZiI@Geo8unLh{*RiHD%ux=WSem#nt5i* zVd?tsBS@+Ix#gdVF#aUv)nu~46>UK_8c@(z3{5Zl)8BdWFDEjO==kuWrri9mJAfiq zt=VZ?ArzDl=EQcd+4euLPgzdAUeB`tfEV}4i9t*=;W5|fvneQ2Ji{niaGlLDGsECCV|)%pTe)?~pI&+vZc~{<9J|YbFI%;mUf2k$TnE2# zIx0gJafn`cwnTiA_c?W?DT$q%f%CVP8mkJe8Iukmy4VpH6nFM_NJl$&p6Sw5OnK%( z8gfiJNn8OhIFzus=uk@yAAJGzB4>%2i&a)XIur%=W@0Vc3?E68`GZV=4y%&O;g0hzplccP|{E94m{c=>8} zdSM}E6$$_8&A6$kIhFmyn7-18Dp=X4cy=40GNW=49=qE;kd)L2R1=#kt`t$7vnLK& zC~bFBaV*H7jE8xv2`rO%Fi3P%b_9MisXo|-+m|KBP+V(di;$(J0e)<|O{49j*` z7aKWhqAh3=&Zl%DcUOyxA(^$BQhP0___*O9Yr*K)n#+ zwt8;*xAbT8m5^t(w63PXj#>>7s(&TGsT<=wDd-#$dI-4lYQFl(UFY{sdGGD$2)|S|p>CUg`)h=GPqNrUP57@J14ksHIC(zhM z5vdDr_DF`oidCNb#z#ag@ZF={MqXSvkee(Open#=)vON*1G|?e)9T= z_F%hIPY zRx{4GM5ZXT{W&aoyXWi_cXD&k^Q33j$*0~TM2O9OD)-OX7P`LUY&~WJ6fqolBMYr0 zfu52Xrmp@f9o?-Ff{gsxQG~Z6nh=ng(*vTe?ndxM62`y`S)^c6&~gO$?R(^~3-#lu zF9e!QZ(VyEq#PFh=Z{ zzk?|Zm)PvV-{Gys9OsTypxMW_{AocXF-8=5t?Nq9g z5`jfkbw!Tb1?QO9a}{}(hlp$Je@H~%^V;G@_thbD;R z)6Bz4zh4K!QWr@?l-GS_fFkh(G$P_=#4?T}%eL(mI>W*_g;a|9aOLKHGZ1gDiGtwk zm%Eeej%-C?1%`Sdth!QJv9eU#^WE_Rp%42zxGyTQGmSp#+7RKM;mjP04r&usgN##t zkL`y%wCb9-cpdjz4Mmtg;72wcN091TWJBQ2&i+my_a+`T(u- zG9p{AVv4n^2YglS;QNuIo^LQ;w~;egfa_5+VGdS&*38w*tk94xQF#~;S|M6VM#hNhZL2{ro8d%TYuw2e))gxPv&HzA( z&P9KwF}i-T4FsWcg|9ILdDlZL{=iCNVougv4r%PRa23U@~kl<#Q#j_~pGZUZ7&N zlww3beXLNwASxmJ3oL}mx{qS@`wM^?bSLk!#3--$84HEs9t>f}St|!Tt}Y_!0GI%! zPE{rl5oKs+VLDc+4`s8haBxrER3L=8{`W)R|4tzOcgLeH zz{-_4Psj=Qqm1f?^sVDKj_mk>G>jubL$Yq~hFpnZ^Yg=Bt1O^JgMM9Y);=UKu4r7a zIa`j0l(on8?f3HO%Z|+9@TvJ|pGJv5PTl4AZwtb=f&%AfFUWo=Ga}a4t1GwX&iA$J zE8pu_Gl4HSeU2J6Lt0O?2epCF9Hbxn(@Zh@K>U%Kr5LtgE!(aHCV9nd3&8^`$Ok^pHLFL%n} z%{UP0fX!T7l7c7GMzwq%BaBEjMIj>TP7y1)s5Dg5jW#2*^|vYS(4aZL?3s)icYlOO zf!a%e^KewUY-@HGn_+QQ3~KqN#>Q&0bN>`#Yq}<@Q?ogy#eSL(bt=0ub>}F{Jw050 zVPw|(=tUKn4}2+=f59iSLA)n97|&(ZrE`3)`#JV+=g7sRro%Q#f~elG8=dov0#$fU zQ_G|TJ{!FW4HbzyJIvUa!|Y0u3ohtgVp>%|-Bf|gWG-tq~WP+o)Dd zM51epIXWJ6_{(|&40=`lX3)}TtGwi#D#S>mYYds03znMtNz79IS)N*Pj7<7)5|^>r z!q$G05@+%xh7-2enDfaxBkByA9b(O4%(8p7U{%WaEU=2xVSJ07T>XRvp+WHh8P0{FRRh83&)Wif& z0n7B{I^Fhq(hQd@c4J%%jBMfZQVBFGE5n|5SwUY+>|R>LphU&$WdBp4vS>Uy0wV+p z&4@?3eto90t)?tL4gUZ-y4_A%(E2w3Ar)-@W4+|O{W-`|rjXX)9mZ(mZ7(G#nieY} z{_eP4{i!-nulSe<7AO?2J6bX zzhD=kDCBYq>2!2zfa;Yyl>ULjt{8F)F&!5cWsmH2PKxCb;+AD4+?@TijMf6MC8?Ao zCm~|hj4iQF=N-s;lS=dlH5U@P)-ctK%Ma)kNN?pzc$tuBXRsFPiIRYX;1hzr5enf9 zH*bn)k&zAsQQ>q{lRiF8%pJ#aug1PDa~VeBezj5`alAHv3wBN@DPLv&wjxyFfO_nU zM>-VbCK#~+ygAR!FaQWV3}FQD_+IvPMp0p^$f}{v6X?==a*I-7(aAt9e!w-fN4X9 z-xe?Qt`8bvnIQ6(pPL3^clPvO@mRsp7kA^+c~4#JRRq1k-!^=N_CesFaum3uc z&5}ZjDUz`w+XXQmATf}3zd@ZHl&90Gm!ipMAbFO5!zjVBgC6FE7aSUYm9dYghzKel`O8n`y{5$DMqGm9_*E5{qzy>e7;Jxr>wG4*=smEdEiZ z{t)TS8aB0jDdD$4SfPHl3dvMVCO&f##5^e2Eh&X1LF&w^Px|51!AVmES6gL!I)T1v z-X@l0;vRn(7d^z`NFD8%kbE<{j|v`&mOMwGXW0fClvUqq@AM47wzaZr_pf6}tuu+h zo!{9mF%fQO6}p)=Le*6#=Q`KJ1DtY85*LKB&&y;-3lOg!Uq`TSljt*B=>KMvrT^H! z-b33IT$j@36^Ez0dvYtIxBF|w?hL=D6Wsv4GMy_!yvPvdNh~5UWh!X9*FsfHKu1n@ zrA=tSP;@8A90$aJKvLaY4~ZT4OE6K(zm)?@L_%LSKp%lYUV_h`GkByCq;*gQMPzkm zHW=G!YK<`092f3p?n9*_XHqZ~oY-~xMAd#yr`CFMESi;-Ec24^i9IS?A23t{B3xvS z>$8_f%e;azJg9!7%Fx6PPfGpKs2#}lLMPDl(1F7Vrvk)^B(2kx{BhL|k1`|^x62#I z(~hX#vzYhz;o^DOn$*8w)RMT({YBwr&i^=9^lj!2?>O+2pkRBBs}8FFtF%tnEV_=Q zgN>&CkZRMp?6r_lXl+5};|DX`!(*Ym4y@4k{}bz-CumKf{*Ci8|E>$r0Rbgq$m6HV zuR}nkey%}40g{!i3Xou0k(T8ER>dzy<8N(gGgnuwfw|V!aVF}<%ok~eb zuQ!%|k26w$D5CD00g`U{j6^WE(qv~YJ!(s5oqRt&?%?};cjqq1twum;)TS4QnY z8@W|BlNRXVQ{;{|aE{oL*g4?}Z3wi#5C%6Za<4qR0M`Ri*BpE~H!nT}hhS`$77RJf zD8EE3l!~F|qa3XaehxW7S2@qJ7*b1-)KAqJAY!uU&>pJ8S<-JIV6nlh9%EnTJfxV5 z_iJ-625@ep>3}WuFFOYA#&mZ~Zfr(+pm^eHclt9{07!o~wqXZDW72Cri}vQFgc;T@ zTf|1P0km;8`&d3}elHBgF7QeXH2-8t1#0?Q64&As?vyr(`UkwL@{noJNAfsez5np2^j}$W%lEgKrv^O zVw11c|M`H7|73TR!UzeVcUi1$&#^9QWI{qQpiJWvH9O?i9j=+&9IoN~RRX6Bh&WGU zOF-#XdNn*f7GjniXZlGypD0H~V0?PP&0hd1AXNE|er9!ynlxb+Ma4OA@&>(^LlnF8 zYVnA)4w*irlTU})p;=O%M#pib(z72Wy^k~;gWHd3p=KYR^>dg(+3v@sGt3eX!3+5R zj2Uko`oypk=coz+{1Lq;PsTo=o5YzYJ2v*|H31#nFEHGsnqk zxA!=(=Ci{g$z)fLCimY3)AJ5LJTgNVzjOGX*-1TWtsMp;E`;q%-bagpEL*Vq)smnU-Yj^m!n)L zgml6%A#NYz#?x8Ba7`}5oJ>Qjv{zwq(B6gP@M|x!v-CGVY^;nmNRj8SbcdneM!E+U-EP zZ}lPGb_BffsGID7_==#h-WchSwP3deQG*Kf%fo-b3H;izabhsb*-oCq^^Ruj~w=TXtM7A%6%s#L7)2nHWhsVm3` z9$chczl=8%_o7#9U2Bky5uF;J)%h|G*X&e*n0#WV5p}h%yaM{j-hEylXjv~A+cLlh zR7W%YW+n_G#Xx1WyKIu9J*n_S;-<3O-JeTsR7y|8z^8&SWKU?`+YpA0w>_09wM5BV z5%!=pV-yi&O?Mje**PP`K7<|qMDVcZcME{EsZ2;%_77xda z2i{gpF34-xYXgF$t>6-J5x5|e`;jUNfk!bWT`1zsFG>EAmn=;VO=EpnR)|>o>5{St zgRN=3rk4DULfM`mv3?7QFJDD&Wptf@tCM`?eMgvDde~Fp+$mh>I(Ze|ROSB;uwvJ> z0t=mdDZ*2c8{9C%J)Ac>dJQVfIQ9l_tL`^MJKe@%++x=gr|P+}A@oVVz2%B&6~B7u zvFb6Vu{xR(qM)<^!<1qP$WC#>syscXfO>TqREIyqw!fVY6yq1OgMTQBC2Zp<$=3n? zewhmlomhBuM6uTu-8#Ix7}Nj&QtvX$8k5U^X`D}WiL?xYX!7|d#7DGJhz zpm{f-hJ}ilW0)=FyxDg{ZMFGf7S^;P<0*+!>HP8WGZDIlm}iQNGH-JL5J=AFxsKwB z?$Z%qMw7TB2Nu-dlRUNJ46sLH?4o3-&=-7hSxxSRFqz(V z&AnEe#Ql}a7cV;b+ex&BLQz?noY`9Lc*lu(Juk_Kc zvKuEx5#t+F?WLTboJ1c7);z#3Q0&FOpS48;`^Y zg1`RE;aJ+l@h+uNDFwKnA@?jJ-Lw7d&&{NHgnsruFv98qpb+@!NxBIfYniUfJ&J{w zrDTSoP|?oy22)V4)qX$@lDDNpt1kL;w-fSAyw^iiR4p=2TAp5=&>4bXi{2~9*v2dq zZ`PCWQ&AlfMko&#MI-4+$qBh%Mk6H|U$N|lZ+6)wT_lTE6$IU7_I_aO+>x9IF_h)# z3^`^L$stz)JUYijkO_}$5^&!u<}k>PsN1B>f5lilD#Q`b=H@9zv<+=W#`O}1+`xUwJ#CKuc8(BVipfPT{SJQN zhW`$AUnq8u!KuFgub776?{e=`_KSX3A`=S_V9DiJ>$6SSG{tbD)*0U_v5A_~W}&7@0mhZc=A;EwT(qR=^DhNUbiA`(=lV60VOL zVA)eJpzad4!-Xz)p4aEZ&5QVJVfT3#QRPJ#-}!}`{g1-3GthT_Ii`xcVyN9ftMkx} z4bCem$U8!}&kFdTK!N35a`*I%>xBfuxeLVd*Z2mAJ9mg3bW1(eU3q8oqHM?=`P0kU zG7s6%mEBp33&tdNe&E6?2fe$e<*Q;}K*l>WyPd*)>f#4Fy^peHx9Q3o2j|<$Zf)`s zNW8AM=+| zkw3G}FK#c0_+O}B(xKlW--^5R__jf;O=mWiGfGZ!f%n{1A(GL%YO|~%c~v1e07yea zl<4t?k}{bk1Kb7YBeJMy8TEAO(CnM65jbxa4t9cQ5B8(NTRS8TdUls4Z-o4c(R znY1Jp48lTAG0Zs-7Kf`4iZ;R&URbJ$CzT#R#*`Xh-?=h~(?f;FvcXD;L3!sE^@IS7R zMi^yjFY@7s__97+6}_HYSlE(1Zjvgi-5d#Y;wVn|1m((PyvI%pu75oB3AYKCVQ?Ud zH>vX+c_%Sxt=>T0z_h}RDt_DeakZX!GU-xK`Ll%B(LX_BC0WjFFHFm3kBKh;)6mz3 zf=|Rsf=;#WR<{HJHhnuN3eZ5EW#l$#K^(mr^f6|PO6_HE4>wMl@|z&ju-*TIU@gH` zP>xk~@rqZB%`Ymto;V>t zZb^ROW93Qa#Jt{z4_E~;Xu?H-l?X{>PIX(fAC zuHTe^a69?ta?{{)2~=HjBNyICnlVi*;}pf|{7p)hnBHkb%;Pw^)#gLDlsfj_RwDxA z6JJ-HbJQ%f)HxC0)^=(*(8{3={fl@B7SaSXM57Q`a@D9$4}fJ{_W@EjkT*v%$)TfR zY&^T8Um)(MHpfbs5^jRnDt||*c#bV2^y)PNFYAHknYE-iFJ5?h6XEl zixhBq)v&(7vSptUlWASCb$b8$s$-z;%sO)qjx~6vkcm1D-9Qb?>e6bT*-lVDx5lD= zwskQuVbD8V8vs&l{#j)n74#|;63!J~+oW#EI(njpebuFE(l1nhQGe@Yq{hq&-W9Za zO9EAVcOT;1;F@Js);ha?8TA0dJ#E>BZ3oqU%5Qey7>i9+HH*G|N`kP$-MTJFF%!;} zb)%|*9%5s{mU;C@%a-5%jYZ(rglir$jx}W`JS#}WHtL4C-p6UM0uf!#>xo&aodt`WReSM z1c`QFngO)7l*_P<+@PhyS zn1JSln8Brx*1Oap2VNSz!@K&qFl+Eempkpjb{X5hit>0tNSm7Hrs2t9=3&uggfj~9 z)g~x1Ybe0*25G($J$Z7Dd7d$s<>OUnjJ*`tyZ~altP79|Zx=J{FskfzO^8*EX|}?* z>f;4v3Rs};${%G_KkF8UQ0?ebG4^V8sKltPDU>y*9z}Xa^@SHytd;vqYEG|8+3@SMEFRYVJ^DsxjvQQHn#$}Mlv#wX+pt`HF`$0%p%RMP- zbpwhfuq%>5g!rtpJDP;}DyZ~ICAjS*ib7G^rvxD`mwr@4kRvW==C>x_m+4}$+L4p* zOENsVhB=`C;@hkkru4mxDNX8CB};T{_iyaEBM&hPv^A?M%0p_oe~8n?;FzfGgIb1U zNZ-GR(pC(5MHrpeJNIuoKI>=bV9v*`bpc2-MdV4%n8w2+``vblI>;{`$P=hIM(sTX zii@_qyAyVSgE9qNP~BpNAgDX>A};Bhfy*uEO$5mmy(jyv83g^hFqnr85>H!X%jz`1 zOi=3cXS|IW2*tQV%Q@0ALQtv12`}Zj9Nk!q2=kqmO(mdID-_xbt-Abv6{5Ff+yf+j zpe9#G`DPok-hIL`lxwA+t)MJOr_m&^h}6Z>6i0W43vQ`S5`lwLZCbL>PSiw}1uHJ; zj9Z7hyBN9=$fnC!LyGXU-{%ar(5X`}i$JrZ1a_BLhA8TWtFnOv7}{&9Udb5+llynH z3xzCWDzD>kMdT~1)ogTcc)&bfsC+;e+tHG*&hQlLLj`gId?Jp(~^K22TFE2Xf zTfpDf>d;9p=^n#%FFWg*s;jMDXmP(~r{n2>fc{kPV1J1O2LTM?0Ov;f_ahb6$r@c_ z*zYj@)Sd*Z!+3&QRM>~=1=5nn@~UR^t1Lzrm-8z1Yq9m7;~h z1OA4foCCDNiB)o8MTqsd7>N5F9q9H>oSvQLUEJ1+h&SS4Us)#~{CNS_wD;ma&|?<> z>Fmw_W4fomHh__aha{qW=L#@Mx26I^sc?Zxbx67DDAAAVEr7Tn%yg-^ggh?;|4v(1 z+bo`)V#y@{4?FO{3*9W9mxI*0v+cshhTzmf_#0{7jjJP^L~v4&mBIj_EGrW-Jx?aM z6RQtf!xzJHmFotj-p0<~8^Soqi}53a2us~7ZV9L~P+SmR6$w9?E*vnH5||In&5z88 zU`sRRCC$z*-C!)(LoxQ8q$CIVg$%+;BDa8z6PO(nW_u>_C=0eh;FA8voHpvPnv{`& zX4k4CQgfQcf;lxyd?d_G0yv68-IzsdcR)YM;D!daU%#k(?Z1Q5^h7WonF$E_X5SUr zp`Qa&_Qm%dTn@N4$OXXd`p$q=kKfl9GOaMq4_eXuHrioRwWu1Sl_q828YC-uE0fb@ zJ#!R+TVPsZ);JGqljW$VGd$%if=j#FekvPv)XXt6u!R@tPFZn|{c(vO3gOKv_KDK- zhS(n8Vu#OC=hGswdzhCM3@)-n_R>#2=FF*~ctg{LD9HyarvkV}5Zu@T_h+mJ|1vG^ z3(VgR8-h-uPd`zVDHqvM(%We$?rQ97w`9Z=5?iu`&PYHbgsjAG7lsNF$xhLmJ5S|A zI~(JchR?vc8^sn2VUcvqLzrpILg5D~l?24}35lFStz+q$VCjNK$zysfBh0{5moX(4 z8&jC&WfRy9MgsyYu0#Jcr5{0})5GnAs#c5KJ9F~kGvtHY68p#_NkRunB;f1ya!4?K zJ|fAuamxD%q!A*bkLnss%AW1Jh{!JvYY|kcl}To+9uuRN-}A^43O>cB zyu>Z12I5gI^8D?}`aUB3oOTP`u@Bs&+KZ4=Nj!=TrvUy8o`mdUWzYG4_#wF+F5q++ zUeE={{!CP2beUEz$N%cFbO9SLL^5tvV8JJx`Fk43MwbZj76uYfFJYCL_lVCHun86d zm5&e#^W&fq`qNaw1Fk8KMNR6gk1*Q*MY0qO}!FnBpz(n0sh1|u-_>SsH$G*c*%7epM4J%fP>oy&SWPohn-v&cA=;)G_-??-IH z3{TG(l;owaVqaPUOUmI`D#lT~UHj<9>?*0 zvAYeN6o7hO^F4H(`k^WXA>7~RhbDlq-KS`;%AKyDZ~s6>=SxKrEJMwNBtA11N+xDn zqydN+OybarFqT@yh$R(_E;mf^65!RpZpQX%TA4_vWn^aM)R*cWBPNd;*Twz{rs)yT z7}&@3)Z>2X3xm*;8{u|9znw{F8|%u-6?l ztJo{OxE;3byK>8PU#p}etOK?qjJ9^Kw+-+id{bwmreUGfJ%*6rS!E}>wYsw~?k-Y% zvM`!Ao*>iiVxifrValyS)e`|5G$I}2DxJ{YlN$TlWEnUUAy^K>7Oe`hkS1S^mE=(8 zD3fk#4O6Fd$w>oGgC4lv6qvljUyQTM-^{7?04i9PJ_Pd%`8TZ_uz}9~u2B7_C>j9g zb^Vi-rX{lyeIsXr`(3qOCnC0gzz|rLoP%Ad)?UBq?r|?3Gtk=~g`3WCYtsJKZczN9 z5rD;)8fl1%5xSr{ZQ!{7h~-080TqPXissyW(hbAjD>3gPeVoq6&7cSI)=v5@cpH}L zH^>ToFW7kA9btG4N6`f5TiUl?8V6{`;lGBdFzV&phM*qcBB>}>V&32k?iE5uEN^=n z9WML@(eMtkIb7Bk*PXg|CVqEe0&hMI5A`ml%tx0_9T?w=TrG*F>1!4md4)n^D?Vi8 zDf5hlcjN5Nhu>UchGuo?Jc{>?r_-U%n|XR_eK-4ex4k=Pm#k@fMI2tuf&swa)5Nqr zJ8GpEmh)5=F2oj$bgbp{sh6;)1E3F|3-rbswg~=Z8OBa9x$pKHCzjCTf^kVO)DEQv zs4&B?yo=Jb8x!-}R&Y$9Irw9WQE{wQmee?doK#zZyY|jwV@%FZmFt-5Y_v2Ysnzc- z=I!=}j#-59Zeg&>nHbrh=o^4pX^B#Dsyfz~R86gjDH{ass}0)nskE76;_!8*Z(n0h zt#;NM37Biiz(H%fZk26oVl~p5z>#u3@WRpt0lSoKoAV?Qgr=CvG1qeJU0h9r=x~E; z)z~oANs=$SQZWDFUgR%GMe2Vf+IY?_waQVu{e;1i}zfS25loj2@s?cUc{Qj$oCN znlHC}i>`(1cJo(VmQ*(O}I{DEq{UMg_&|Q|snFq;Rabn}; znB_so-X;#VGd}3cQ{M%lXYOk-UYT=@`3{=Ox4X)xv~AM4om{|vD!(TfY}NYw$I!Gh z$N~q1wEdj4o+r5YFGO`EGicW*j5<0R?FIFY5&l>Jf!p)Pnv6W=6_;H_FUO}Xv*PIu z?v&PIa>usB-0#1^C|l4O8j7Az5Bndx1ohl&JEGZNqjFgSE@c=SqYl+_Z(5O+(pURB zd;BxH7@$`WZuEd&KUNq_dvpUJeRv*3Jqp`8%6!PF(-fuci$2H!x~JA3a(f8duvO&0 zXpL^Y(D-dbQ)BgWe>d`gYTVC2>oZ*E3$3o{q}=NJ;?pV8kZUN=aOqFvg5{RuLAd!v zgo_K>`hxsH5@+&ze4PNQ7*eGw2$kjfPVubsxJD%>v|<9lWrGJ+3wmNQ9Sz*d_c3p% zvgcRc?Nng4Lzfl3&6JG<>h<$9X~-#$VpTz>7N|Q28IRT;WUI+VwA~Q;1fJGql@`C8 z=%IaeAC#8D8Mt_Y9p%~m;K z1>TFr;fDrfi}I~Pt&>gB)BDi`7+QTf-r?yChCZ*z8tzrAg91Ge!SQR3;SdPs|1NE| z5%k!}Nvv~3--6~mN%+iQV*XuIS)9VO)mF<5d{y>=R+X=EzFtR;j9Ns3DmUO_LfaEW z(*&g4W2ym9J4d-4Brm7}RV0a*61jcL@b>Xg=EMVFZ#!YeYK&bq0O;#1vLNU(_Ic|q z&hucnZdHHyt;7zlC)y7tR%vi@`_Y3@;)TkunWwBKErTNjKBH~66^=6+?5-#S9}KSi zom%3SVdRb(#cAh+WKh0-Ck>p`!d#xpvB8A@ZvKh1#C79N^g_LOr0Q=aM2lYuGKRNk z-Jb#2R?Q!kW(-hy8+g@x!D9(Sl3fKK0wt*^0O_J7G4etkQCTDcoG_iN>V|IefmgaM zR_FS`&t}5RfDOx-`I?eW2YF}^gvuI2mR_1$TRuc5{E9l)uq-gRu-AA?acJ}4xpW4j zs_i@TY8<1`W3bEvKl9KC;~q*|IOj!l;SB=>kBfc~P=-3R`w|df9@G`;6P^3%A}>*qj0Z^0nkff~9>#1C7;Jn zH5fP6OSL_A(+x37H<6g6OL|W!gXH+bjnFF6-2`x3H1p8&%Y5yba*RZZog?t2^~V7; z+Jpv6uYy?YSGN2a zi9Jt;Qys$MFCwga!Bygg+oZ1MuBItb1|BF4@X76zOC?2UynnucqBqcZ1Mk?ZZt9UV z;JlH_Y8$5(dMxfv9fu<+vzWZ4W7g28##`YW ziv6i8e7PjIfI0tyWIAZ8Cv_^?IUUbo0WN=vKi@s%p8;|^RwKD8Si$p&Vu%H(%n$Z= z8xZaICi~8Wx^s~4PrZb@gfS+?VaYt;2!QD&DfM1`DjuF4C~<^auS4NMm@e^zW5r;1 z#`DpREG9KWQ_l7aPD%W*-+Mq-VB$FXLxSd;Uou0`=BC#7gSrtc<{Pii@#C1Y1)i5D zWNkDDy-w}nF;(e-p|j@zhujcwD|H))^T5VyG@2x9o+an)3R$E#l~a=vut(hr7C_8G zQ7qViHrn9jnj5sGUJ2h&Ea56{rGUH02d@>_Vuop|`-upckI~r2(l3Ev6X(y%4l=tu z<^DS62ZH%LMfk?W|9JiNKlk$u{qB8&z=41mVS#{t{O721Vx2O0%EsT*&MuM|U{;qQ zs*SOdIKY558m=GgYpfpkoazr~G{JXkTIFK!j^p+&mK_?|)aX{3-&X}I{xc%Vw-0jz z+Cc$P=O}N9r;0)mAv-^Ze+v&va^#`XBs-w48M6sfqGHEFE*-;*v-*#kX@Ap9F`8Rn zM84_K3H)(rymk=v{hC1-@cH!RzcOhfI!_N^u*)DO+-@ZW z4i|#fNTVX(fqLBSnltU>RSWF5m$wP*z#ofut9Xy?k6RwCwDh6lw?kt~3v=UsxNKg$ zzG?t|jK#L4_Z4@tYr5@26S#~#TKM_KN#AW?Jt#qY9{Sj_aG}W_zAs>VZr&Wlo3ot1 zA-LjorM3PNP^X%`TVGpS@=?SOGE^S5AP*_deSn7i)Ey5W(8({=DT{i3VO>%(>1us1 z2x+NQp`N~Qo%>?s^V}k3OZK(sQc6p&{tW~;>u3|b#G&1&+=FFsq-{*>{QAaneHOE4 z1$4}a>D%*1)#B^C0=&X^T)k2Iv)d*|WT8mL9HZ=`950T?9PoBH#~i};nMRRgct;gu zKt`Ekm}B%y)Lgsz+ZRiNLq*j!7@`e8Q^cbH39koNa z=JneKR@`+G6&dSD>u-D*-vM*p^CWtsNji%m+;89m+O5@J2#?1_JGRsvkTB0mQg)HP zrO5X8b^;_xR`4r6kS+x9B+)dUkA55Vf_$7jr|k@D1r1r7=hBz>v@@Vi~6|vOFNE2nSvyU2I>8-1CD|C zL9T(>K?s3X(6n$hl+HL0C~7#H5*j9Tp^1ZXKcWAVJrUM;s$`f5CoczR*3;@A!I+EF zxAZd{kiJJ(+w7n-b|bz7oJk+{PX@;FzZ6C_!orv=G=($%nZi4of-^G(e13g__HpaI z5&vC70iyM-+N&XSAOn%u%L(3k-t#vh^o(z~$OscBA&As4yXl_yI5s+LBW0BUmrZ=E znt&Jnfn`cld}-OEGII@3hdmsSW1dA~Ah;utFW0dunJB3-pJo$gO9gayt5;p{+-pYn zXVNC!tx55Vqko&m5Xp0%VF!uu#^0dLitwh^`O6|Rk`=|rGesf|HhH+} zLmP;cDHv%e4`iX&E^kz;oR?Y9^AEGv5a31#`uRX#Ke&o7%MSDVjhACDGmJ(@>#90u z8CorJuagSH^DYB2I+Ge%sH>EPylC^0yB2IKSyr%y2-G|8t{_8R-RTvbjpu?PX3qteVDtrbC`T=WafiCXi-}qJjm5&Saagwg zFp=+ko^tZ=8vh}Ax@-60!+hxWvHdk0?9<(LFCRm$4QCiS%&#LvxLsF^h{*Nj&*}X8 z;cXm3@|Lz1;|u72j$FB}nd{Mi(^K029$TdU@5qIic%q08Kubjzj0jV3AXb@E%?iOu zH{)Z&$UDi1y>-?4<%7t$V#@ZL`v3k2-D;rIxpY+|)X+yLV3 zWd9HjhBfJp(;h?gDb_Pyjthlw%p0N7#b7{z(m-YpTKte8VPBDIjlDHPP zeTS==Kgv}O+@I}wc~3Jj!?k?5U^jG7%jBwls%@wPgs?lN1?!(ip9=fydW)4hdcJIM zg`2QE`PoUZn?`WqCl15Ff?SWkJ(*lj8;8bQ!8Cs0X2=7mgxG`G=9zJ(fAf-^-p#;j zyu!y*1_gJGy!>PpkDz)qIy9@xRu^F`jP+3jLtPw+6HF2L86#2En@~i0T%RW4^WXFm zxc`&QKx5ikoEWVv2smWt75j-c{0vJvU>L=~OaVbi+~3w`zE|@Tbl70T8Da?FXtYP_ zunYO3IKl(Q0TnLmxsj8Tvyro1dmSqe1UV*#)aQ&QSX7YKUlr065)~pEq7j?9wyxPs zf}cvPYjID&(NV(|ZB+bH2#JX;6#6^i3R#$fBc|(8-sB-Q)dh(DN@uwBe z*5Q6W9s&56K*2?|^~yDQ?26S-kWo8Dfjp5X#vUu7aE;wMn(C>@{Y7=s_3bc$Y1-7aWKP<{As_N;ui<9+;(ma+!LV$0? zXZC!mXvHvAicF#;xGzC+)}sQC@DZvYXvF-7xD{gf5p1pgtJ_P?E;|d3vhWNq^9S3= z9ix6Q$BW&EJZJ)%cEcfNN)s(^WL;V^;oq>x-xxHZdX*xsnJopg)^+%50x{=Dnz#fJG_(zwmJwdq z#v&3fj;0vVW=Sxc51D_FM^X#%Y|p|2bd1eo77uGDt%Wh#n0ny#X1mjM`*F^F?srz_ z*V}Na7|;&PM-{}qfkNP#y%s2FNE^USEI5_zraup65U1=zGdQ)~BRCV;R_`#}to@ZV zY<2=!ZkVW{!7j9)M?67nJYfWlfTz`&K>d^Ipw78zmEBzBuGZL?QtR+R0H=J1di< zjB8*ArSll2yC193W;Z{znjn%@wODiKT!>NGwbQq7wD2NJyE3+p;vfM`!`99_JF1zT z;F&kmq5RFSnx+va1!aXl`o_e>6kHP&gE_Eg-`sHTmiS(=tnH;mekGaLRF zSKk<13D9jj$;38JY-eKIwrz7_p4dJyCw3;bZCev_V*AZ^Z`Hl8Zdd>6+JCyLwbx#2 zb$D|{YjXCWExaooRb>RMe0lD++PsVftb1h%txI^gGK!2BGRG^=$oE1RL{N?vIbs6g z`LIy);Rn&Y?aWWmv=%XXQxy9k5iU<+6WwxJEeXjgc)mLbOq&U~faBd<>q&KYr#7_Y zIV>$yWDOM?OK}hC;Da?OYw3n9%F=cWsvu-?ysRZjJeFp?zhc+Q-&~C z1k;?j2`BFU{!X~5$dDxhS+;i8#n^N z5Y023-6LAP^8F=toTa+Jo|^t8o|?XMTB-xK?eY?nE;~J5dyjWPC+K=GyGOxxGz;e*PXzj5f49Pzm! z76FDryJ~@_5Np@1kdU$yTn)UrodkFB5Dr7Tu0s1r58R|Iu>0MJrKK$22>VKffAGB- zzjKAArTj%xUpOPDkRTxHQ)D_5X8K2r;DKm|UA(aviN z#OBTIlJiNXOygMlwee8vrAVs}HK^y*9RTO;mM&KfqM_2!D;{|;Y7vYNf7hjt{@d8$ z$Ga0Sm19;n+c8TCV z^%2L^YQE`r1xeMATMp$!Vn~Z?u~5*HVq6f@=3RxR9Eo6Mq$0~x(%tI%2kg1xKY|W* z3FO`6C(J-?dMDH7^Z%eKxg;#siY|EgqmM0!UcTxd)sLeBxv*kUZm1V{26r^NV;Ro` zsb!aAaVnfy{bi5iUuxu~)wzoX69NUGU=1ITq8_EVRW>@`jxb%cK0K?SnV2}sp?=de zL_S~3tm!m4Jho;}sfFI^>sVmiz0Hr)?f#Dpd?dO`s&Ep=UWHYwxfGUE`QjHCc2K(> z4Y&b6=unRWh^8pm7(;>U4vuNCrj_kTZo@$_=;Z6=W2fU^#h$t~1%@r_UhFOAs*<=b zTN=?$V^+Dcr1wOKpuL062+OJcwhEYL-}%_gTq%A%>7KSKT}a^k8^q>ydhOxwnl2-y zc++l*^_q7p-H%p9Z{)OAjGzKjFzv~f-Q%WDeJ6jOwY~zfPjsBTk^9`^@Z+0p zX4QpaeL2rQ##b?Q-?ggY!vbi?gX;9jz-~ZG`lP^2m}?Asu;Zr0e=2ouuX;+NqP|?a zKT+w=+dd9H^bGaelV=uJe=ubR6=6d$g{-nyWs~6>BgZ+Nl>ut{1%x}eY%iH(r2!NqsS?SH8INwvWB?YnJZFv`Hd;BEw{(dPJiVyOgs#jCzjdl9F zAcXbbj;5wyB{rCO;!%eD#3jt{DELr+niu4Lb<+MW_tcIaFQFgHI*gdPR>u!UQ|0iT zKN=9=6L_64RFFqZ6QgY>f2< z^cneA5_IYH5i0)rw#=htwYxA@y_?96*3or~qld-e`=H#moGcoLCrKKWKWg}GC|MDX z?fskL(S4aIzeNCPGseGkBCfx`pTv81r^9UX+gJbI$t~2VNE#KqoAxSgbvXjM3L%2# zx=jLH^gmMpoqO?XX{wL{zJ08G8f$Y};7tERTSgSU#kA}4tdN7Xe;k{C+}~+bD&Ncm zci(#?ZpSN%Uj`v6$9%{6N#4i#5#E~0SNQbaX{bZTKI9(V<_db5O`^4}L?sKRW8Y5h zTdRQCoD{v}t20Kqvq$ zYf5eYa$aC2DNcZS)4Rwn^@e{DHU2lj_#C$PFkgfyM4;HwQ`uFm43+=beGYvTzyO0663;*N+AUAjPcQ4_Q@@)GKVFF<2>5j|5N*q2+ zBJ+=ad`v>B`F`bA*q~6>Z08%3uP?3Y{6DbE zdp%57YqACN9mBO>u=r5P{s)zeWe=UWTejOy_{Iwa~;xM4a z@8qiTnH7d7%{ON3+XbII&UaB_9*;EY*9$0sH>x$9R>nmO_!IOejC414iVX;`|3K`Y z41e3Lveg=)u4d%*lqswaNchdch7h~aU%Cr0CWULR<=Wq_&3EeS1(Uq7RsAkWfC=N? zX4El=pk&990ak%p&{r${Xcq;7GNT424dYSEgd6WS-`XmQ-c@?ZQF4=N9@+n#m9GpJ z6R4cfZQhB-bHeZF2^v-os%rUG|3RHBl=zYOa(UNSD(B-^&KQF z-p|VNGJ2Lg8j!xj&U%bVZ5-MPZmR-#9ItqNhuLUCS(%I+P|FoVmD{?)*nCFq^irE zx>@ooNX(p(h(*YWw4L=qxb>9lq`*+lPuRCqG^~Hp0|e9Gp;Z|QN;Ibf!cP*PYwUHW zEoFjPL~sPP4K@n5BCn9#mPtv;AsM1k%;h!fJu~F06#|RpN!E1UwqXnexU5RF1%xUV1ZPh z73u?D(I@XlhH3%9tF>MTl>1jockM6MZ;fNrIN&qKX?7@_h1sz_!3l}y8~&CnTO5GP zMUym<1^KILkEtBfI7r0SdDN8FH&E?&otqC-t{ZV{7)*@Y+YrP_C^zcrD!Q+^N*T+$ zL4dubQOALrq@WwIazgDAwvpuGOrk0`0w+47z&MHj1iTYnQ}A^iuvdBS>3t^1B7QRUwn) zHz@e=-_Q`dng$^e1OtX_tp+7UK7<(FlTClHk{IF#uGU^seg=^;irNRsLB{gLpr_j9 z3YRP?z*%QZ$zZ4v0FU}p(1bttRTUi0_ckf*-uVa8Ec@WxuabP5PEZhfP2BB`C0_lW zlfL(Is8mMG0KECXe1x}6Ka38}eaE^jv#HD8a}u-RSTIiStbzqc?Q8qij6z$Kr2QT9 zUHvi@SrliR#!_G8lg2b7u=UNbDCbfCEL@ur7}CJ8Vp>x30@Yu{DsG)C3h>8@*H+1k zJt=8CigNa2O_>j%Hc_+&t)g5wZ(0(2^$GO6Rb4CIf58vKr0~wfOlS)e|Ku_+rQ_MU zyEZ>|b>?CEQ@ear2K-B*ya|FKPI3JJl}lV*Lh}#m*N6;NpNxe3K76Uon`%wp-;_Y& zNw!?y^`B>_1qy3G2Is!P$DAd^(~pLm=p`U7`TM4fqsAo>rNND;zkRs1qenyj-tCNZ zxan|!g=v9UW!RI@I7$6Q19#1BG3zG#uP5OC;g}W~H{uajWk!bWD!r*-m_u{PRH_ZJ zz>Zh$YP_DnIh-hxYE!nMmK0_kM|hx#AY_zOC)FBXVW zxeD$AIm7F?rX`_%E#AlCgE0(}C}!R&3KbD5Vd}Bnq-G9%0rNCRZ%VoJCKIr8u-76>VI@FT+dv?pb2Y%e_nBL zHhwVw!Se6y+i5}ZHVVLRfro7RHdNK32GOcnt)^SCuJ)CQ6q-pnMYSwE9tcoAwRI(6 zGO)>iVMFbsM0=+QWOAC{M`xD!pSG{EuiifY zeEDn&xSg`zeKVNQu%30!i)yj8>hlA*?_zg)LSH_a!1PdSGys5vy+0!JJSv{e5i=9~ z(^|WArM{xHx+LE_HHUuNJhQ*INBwcy_XDKva}G8CnZNdbZ`R^3+bfF-XLH>XSV=t| zKfJ{i+MJ5YGZi`b4iJbyjwC>iw!A_WB*GGmk7yx66&xA5_%L};HhvpXF>YtiU6($yVghS+IpAA+P{#96!gEparrU3d zqI%4n>}4z$hNckWYA%hTiUreHPASNMEPPYuhb!P|B7bPzxfQ`^*h$K*oRPbqgRJ8R*cUkkRdk!*KT|5o8C zGi0bbjy6VZj7#XH9k#k}Y`Iy&Ysl<+srGsq9BQ&{lGB!+uE$<@Rla*;>Sk!CFF^+lDaQYcnBMJ`=)}Rt$a5ZZIm+1J%4?3 zWR@d!j6nKgiU61SHWZc&WZdc%X~7PtqsZfolRCx;GZ_1n_gJrwLcnBaw>O)A$|SS! z_AMB7nnA-{%eK0+A_?)^f=9p|l~Qe%Cz8?G@aiY0DZFUad-TEzL51Q@qHT889GBf|2S20~-Q;~I`N7Uk|kUN4Ksynq) zQN!_GRczUyZJCN*W~$C2$D3k9`0)<0>3v%BLfc_esWjs7*VyX!#2*I?%Cg8)oW87b zyt8Mt+~pf{U-1#m8@47Xf|(s#p6)nDCf8M<8+!#?H2di@Wq0vD!?QNQpWz0c?%-pb z)Q#Tqy$+sFB;d@fIbKq}i9e4tdTe4jJ0Ps(Zx)m2*s1UKB$nv+lrS6?mi;#0b}nYz zadTElk?@}{!J)HSj6^a=RyuN6Q)*I#1~9m5YGquBj9O3mt|T4#T4`uFAHi`~yIwXx zUY<|XfA9*GZ(e81{`WTX@7;00VPw~L_)qnrp3`TKccl^Fj-cB+_NVU17feK6-xr)3 zuxS6wNnr%uGjkV^#T0!h>tZm6;ht04UAZr=hceezwx3jMtISr;ct*{tG_r_m%21Td zjRi4A8^EKQu4>6xQZZT0iu_LoX3hf~xBxeR2Y?q_6*WL;Q`^Sj4c#Mv0m(C%3-d)7 zT`QL^eZ+c@DG&qqz`XOavd7aQ4q|EV7$mAyd_n{L3B={jt5TYn^>kObjWMuj=*p_} zEhkoQD}Kiw>RS?crdpupK(4}to#R2U;POy5PzVa}OUsp`N{w`RR!(cw|C$DJottTq zC1WEWim+OArz>P0Fe+Cjq9f!}VwxIm|I&vH9u7d1#V^2FW-NYJ;x=HiWNF;wu9cd= zvN6cHC*F1|c%xY2eXhK_GPGy1Ga9wnH zel)wfx^3jN)ksfL94xU&N_sDZe)3$jr||&d80%9M!syzJiS{VDN*ZYHt}p8-xsY^}JEn@_y+nbO5>KRWSo><| zel$XO({`AI^inaSqzsy8od*yXEi9C-koRU}lp--%N$kPR_)gkliG~QW1>UUnjyiyj zEc>UVl()%uGakD0)L7=i$H%NEIXv8g-fDeKsJ&uAtS|;6$Yr$v`}j(??rw()AG&s^ z3)MMIbF1Q*GFAzT^+uo+=d7RCRX(x2JZPSiv07zqw{|;js#&PCXxi8~u?p*ZYM0M# z8%?5O|Mp|erT9)l5S?>}v&%;Bvc2x*YTZ>$U|*N++mn6q9c~IZgFcSbF&(>^*Gj>i zqqSFI*v(mT^ngv1nW?Cqo`Afv`@bGs#2OqchuKiu@8oAEj-Vl;E(k5xznf8 z)0&)`n40Np=~_i;Fyu#*)?07PY^T{Kc6{T~x%w}1{5fvw)L)bm-i=ayqU0wf=S~Oo zj}KxBeQQCctJA;~se24Pq?iax8+eHm;&7E9-dzM2%OVKH{=?5fIMd@i_;oiN= zy;8tyw-szP@_v`AHE-}^NI#~e9DeyAS`Fdl0VDkP+jMUHey=4|59m!jio7T4d88Vs z&AR*$s!9HS6l8*5;;kBBKXc6KS4P*Pia5u+%xaTSv1Zy~%N0Y&=5iq|o`h-kAFj(< zWrt?Unbd&z3D*>dhP;qp;(vLNEi;H!0mbAA;F}nMwkDH5*Aq**e&>%A?sC)fLjAF( z|I<^oPYxa*E~};7KOTa1gt1Euwv!#-0bVmx0n5JgQvhr`$th2Qs;`H3x15npaue?w zN^hhtknhfYC$kGYD1cL=-;GSKlEJd;U}vRmoV@@zW%FgAf=z2I-*0=`C6Mo;2+PSg z>2OR4?qy$)!qJjs)tQ6j&{OWA?WFxXzJ+qVDEpRqvtW=HoZ$A7%VZP%#Hya*g!fh0 zvvR|dcQm1NbhH_5IX1hbSLu?Rr{8#c7(=|)hu=~4q@D!TX;2eFwhp}jo>kl^TbrFBTh z2e%-Oh4#P9{)OXldWw`Sw(<3y3(0#Ui{Ar6&F^9B=t#G+OF%rhm>oNlA)%4N8P{jCFb7N1jwMGj#4AxU zk|q0-qZwJI@5zzFTvpI?P$uWTaAA^+_bqrL4&9c7=;*grj_pTAO_m@0y5rJ#QfgMF zEZ4gdvP1gK8@dwR8?pJus7dy@PId_zaYG_Zp#$Sjy$)?tMB&;k4gJMPkv9HOisIOZ z+nFE2`4e>KMhX@S!g3b|e-#30yQiVql!~&E)LqqPvklsaJQ~({yMVww7%)rKh};IH z)*e)}9PU;`{3{XKP(Cz3VjfChhM*J=BQP+~qen9Ml@ln&lTxrnBfu*r;AXywSmMx% z!2p)Me+g|HgA9$^oL0@yb8zypq?K~a6)U^MpbbNm&jVI48C?q-tMEF`)Jf7u010&C z31E;9`>@Bb${TUX5EN8A=RKf89YEQR_hX#-`agz{PZ|gTZoBZJ<*i5`spszZXQe$md1WQ32Br?s8tWh2$Njqtf?g7Lgrd6Kz_1`b`_bBR zQ(ehKVZ7&o07-;1uO3{cboS|B&}RGHg|nyNy&j3AsZMghnD;^15%M{21~wGdM*t!qMxnRzCL!u#HoZOlphDl}jPi)d(FBYFori_e!uX7OK~I$grz#G3?xUaA z(ixqlFdH#U42}%~{1Q{Fm@}nQqR3LH82p|}p|6|^MP`d-IYe(RUStL4LxvG zC!?<633^3%VLqtE`7=E~ZHD{=Ij*WVZA!ymRG_wF|nL&iXU#j;*;N}>T zB(|0yAs>9;^o57_^iz({<>|-c+XPsEupEt*$nO{dNO139s}M@E5}_c2c&^trX(!K& ztRfLG&F2ku2PiK5WM}zdHz;R!(={`tQu~cb#Uq3fW&)@&${*FSr|kPpiS(@+jNGPn zB{)HM8p|A;BDqO~_+LCaVcY}Llthd*8L|$vU5$0XTsQl) zZ7ID^TlhrjaAd2)Vm*ULcD}sNji55UXt9EKaoCZ*=_%$ZKL?geNlQEl6t`{rVRca> z;8XyfBoPxF!6kDB;cHSQ&pDu(Q6k6eJc6&dBwG98M?XV18;w3IeP z+VnJlsvQ9mA2&mf$u1o$pQW8cdpkDJ({r-UFv(9Mu&7Q8H`%MnEUVknTx+i^Vrxsj){GPb7h_r}y z&^S}7wxR{-JZo%Aji)(jGuE7S%rh?VB7recFV4Q|Ftegqiz6fQPy-j-_U%1DlD#Ia zKzl;zVV-Z`m(DJQd1RJMn65cgp1IT3Vrwx|3>(<{Y?MU>u)-m+ZDZ0UR*k-I=LgQa zQ|uK@rZo13V)pSw5rHlEd1{5YW}9~Nb8ZRBdYZZ{PsU7j$F{1cmo?(!}7r_1^X~c0@q2pIAjV%Nd=6;qsdKjp-&MAkW zlNl_@N1tO2;f@|PuVg#oI~#P0l&1RRu<<>?W}7GF>EWfe73aR~oj7}WR+pSWhHV`8 zR9()&I`HQ5o)<9`EfwkU4 zSIhSfG!25FBB@(#-gswT_}(k;$nxHM*?V@@zW)z#{LgLpW26Zi2mRZ(E1GZL=s$Gr z5((km#40I92RuG9rdgk~8bK$|4!>*DrQ8FD#oi;e(6Z~NpyX2?EJkA-IIOxQx9~Vw z5%}KAau`!N8thw@Y=l$UsykIcC94%&%5+!0xyW({7p7pUP6wo@8d%8iQYX}^&85iR zv`=ti&+VH6T;^I+p3pl0+B#D6DOuT+M3q=Yr_kDKLousBwU}FW!)u#W$0e~t>$qn- zC8~prM?B$K4v~XCtCYymd31YFuz)(PAotDDDauO+i;u412B8n*MJ$P&k*Sx>E}_Bd zNq>^~okI(}c;MN7N&M1V+uC%9zXQ}HPH!~MdY^nkdGKb)s^o3q zu+no+GwTN6e#^c(x-Kxa{&@Sh#=LLF=}!BoN1=aa7x;j%MZ6b_rWZLxiH~|i30q_F zn?Ed%a~E5zQ#;5u!!FnNau>M8P>0@lIEsV4%Oyfw1#NAxo$tb@h12C5^-h$z?) z^Tr((iODlO!b8T1F4!Z|vjw7s^_d;@DshJq3OUO2H^dW@XI_M1+KvEJ56RvK+UCp- zr}%p+1Q40&IUoXAhG~3<1XYs46DL~SS1O2k>3M)ufWEIVCMKFI%;=_-!>jqRk;A>M znWIAoFk^p*Qhz~urQj$(i+A?>G*TQq{}U?Yy~K$ca2IBR*V$(*C}NyxR$1B=%e8qC zd#O2Xntdp<#Q1cop4VbqYz&$&l9P-wNO` z^sKdT@&FFJT zbl4VjND0e>1abZ<6ru}0l4&jFcXpVtpKE#aVprQ!W;(kOV?+0sUfnprzos0vN2vgUtgW<~P@<1uT7%9q zSup%@ro5b?r8Jl$EQ80F>d9}#>knaGMEjTc6; zc5ccT$?w`(gKQED-?fZWBt^z{gs7JwfF?6sHWtUG0a&YPZ?H1nqfTtz6O_bIZzjSjmfiA-s zfIRF(Aq$onl>3?eeNJXNdDWbb$O(5#qd%kR2v$*Ex^gepcn7e)M$xCWA|6Zv7C z1vIiRNqfEri|$5n)>Ad%>aP*nXKWQ@0GprV;*W3QxihVsew3*(;N}Knw|W_b5%tHT z9L=QGn|WgS3!$d73^r{X6GhEwB<}iLV;o}P_5}aIyzyZXfNYdQXAy{<8GZKi#o7(Y zI1h;sOt=YuCd17QEG>&b8icZDjrRMz*xn@`nhaV)uZ@@)d*=Jp3QOBD$2AO~0-C+U zc2gI|ys&&?04eupyrO>howIy`8x}-S?N2;M#r$SD|Izk>`KdF!g5ym96lJE|$9vYr zjq4Au+Vx=hBs5IgW$?^GONasX3XVThIcyIKPCR2j*Tevep+3J~jXz^~d_f&Vw3xs1 zeu{=&IZ=`93*H#AbO(Q>-Uv#?0KbNw%sipX-UL458~34IC9-lOJUa{dwv~10(E5;_ zli1}*S4&&pJ`M`qJ`)7@imS2k5+I4+APyu@TfBh(w2Nnyy<8&P&ZNRJi{jLYH1 zO8RJGnaPlgbSn{mM;t{Q7a@^Xrrs;js!ezbK~qjAgV!*wp-+b6(5`Km1;QRE8WVEf zg|cXC_0Eb+Gqp-#VZlbzILoi~EaM?QFLny=!^yUCD`TbBPqH|q-tF-*WQQ0F=>dWN^fH~gY5&4OeHT@(0dBBH+wf)nI#Ggdz=)sVrO1g%KDpp-`_XKW{fScKNS-^fsS;USjc7 zPR}^-duN69#I`sn0qFj2m^!_G7v}C=xF~PGPYIdAenTTbu|TdJRS(Y~t}j8OFf(ec zte4;wQ1mb{IT*Xqvas$&x~=5u!^IN8GR(9uJ zF@NeoCF8|k8@r!A9F>0=`fAfC+yAb{+0vBOCMIWvHM8rm&J40T#F^^dK0gvaLKcV` zD-_Hxh9)j!`Cy>N2m{OVCaR~EFG~mt6hyqZGBZKN(c!?-qhhuC%%*{V^My4`*&V6b zx|er6@Rb~OepPI50V;*Un!6TQK>Arq>;khh%^LW(P^_h|` z9v(W~o=)M%d!8I=Z`yrUz&ABfS~GzPcb|y2DAV8L3e!l{PTU_N-VlfDcF|o_909Z^ zKGhG6>;UuSNm|-?t>)UZyf?d&84`VqO1&Ia1RI58f_HQL71J*qt(6Ip3$Z0f=e)!B zl*sbnF@A>ZYYpX1IXumy;r<|ed}LN9H$e&q?{zO7K>o{`J1K+2(9(DJvU4 z(LjTjPeD>$q=nDTIEXuX5XMJCCQr*LWncKfFK3 zy#vU@2Ut#x+*<#8S)#Xl`B#d+jgYs?LPNJOPb3Dtn_aVyLXn&Lwm!{)N5U(DrQ!#5 z72Qaon5YB-dAt~81`d*{dE8b`u7sOK_S53RmouiUxn_pxu0uPD3Y?NG5M3YfBT@d8 zU^_FhR;MdA*&*3imB(D()XA!M1B0+={-0R_mjAGPaVJZ72Zeo9#w4OmoD4eS)M~zT z^DSa64q@;Jm=FXnejwGiUFkDeCAkmB(ue5Y$=~o0bdF3Rc}mxc!MEuwOJ4#fFE3$6 z{DKd&Ey-3heRqqW>E2j-!mj{2Cxq*S+hdWEo?mmiLXuzK{$iREtEmYfv`0alaK-}z zca50{A^hG*OxOnSRp`*}(M=e@jFZ}fV17hhs|um|Lk)^>8pxN%vccKCP^Z(<5`i@! zaZpP7!x~TmT&gJ;`Tf$=cV=C&1tGR#=y)qle&z2gRL1V;U3kBVSWz zQ}@%6c2>OXq_OdAF_**}r1QVpUbh1|US(cyPpBsUAX~^Pj|emAMDa=$=`{2v0p<~c z?!jiBFztK)pzI<(S92IK`>hRyMGYAFD&d`aT)*L)=_kF1mqYGAq9sF`98)2FkiAP6 zJ_Uot-1B#^AW>XksynAI^kq{1>h=cL(1;CMV)4M2(LBXHXH!#COF4^Nkyy8`@cMKo zV4^^xQd>ognY=ZxgmJ9@f%=I6oP+90gGxE^AwbmJThv^AFn3NrW-I%Syn%?$B*yf@ zsKgEC52*Re(b`)>6bf0vEHQ*r7ep=_Tc$H`5V~JGYHec0ENYQElf;#6#kn@+3_?o4 z7s=A`Dny%Lp}`G3;@Mm*bzjY%X zRc+NRliG4dd36Pd_U|wk$Swf~oG=^|mLLQ~4PVHv*Ut^$KbdSfLk<|TSw$vXvZTv- zd2I*x)6cJ|k?sL0u-1j z`{|DxTBbUI=I#G?X%!0v&rv}Z9KfN8wqWBhjT6j17W;1Ksd$LV2#Id)(W^;Eb$vKa z_S$hXB%^OHNfGGRq!9JYYF*XfzK91zo0WQTt5$7{UUIeq|x zj#K*QqOA4i!%yRqx&2y!w5`We_ZiiT z=C`v6wT|PLGwgM7NZtY?2|IJL=1{iqW{5_|=9D$8IN|UGUz8)W`Z@B8BP5Rdfr*F$ zO=|Dh0EOLn1UUH@5*Q=) ztK3f9)o)RhG*yGvW^qouCv2T2%gO+)*!3kHdtHTxhKShG#TJxUL2o= zE5OZ-wAgqck=IzjQojS(N1Iz9!|NWC?b0Mg@*x4mCgy(4Xr+ib6;Gs z1pZ4%tDIpsiw8ql@oQ}0YM|ihB)v47dRE8+&)N^Op)Mc}-zx-|G@hP!W(Ljk(C8Xo z){!$&5(s~-zgSq!vBQ=m3Qkrj_NvELKVI}WX`@)c1NGuwXf6rF4|?nC*Lo$mM?EF3 zq7t!+LizQF3DwGD5zW{tGvt(bHPWe0gjx=Sf{wDLN1K{iAv;x^wDpT9xJ=b?rL?ma z5Cd|G0~}lJt;brRQaJ2l2Ks-4v*S1?CtyR=<|D6ujW`qdI#kqM-@@>~_d2d*#`Hl8 z^O8Ed;6vzGoN)j~k=$a+Mo53A9!ZGjW6ILpzR>@SELK9Q<(v@Ie& zSHp>h0SKSicM^YvI6-&@Yn=6J5o;*yL` zwl#0Zk>$M_f=}o=7=cKpm%0y`*_R6p86DrUl?%)iB0heAEVTfFPsS<8h@HRp>wn;6 z^#8__#|Uh7I{!&{A-?}d!u#Lw4@%nRHWW-!Dh`lnBm~Zk9zdgB4CQ=Myv|cOxTvkU zZU6ktFQwNS03n6{4E9bvxOxFrL~35F-Q~r5=WgNQ|M7W)-fP;3uU4xgifPL(v4YR$ zv^9)~#|f*>8tHZimd_qBUoPm!J3Tly7$1@eJ9Qbo8B0chF<5x4uW&j<%drun;4_{5 z?~H_?lafrTO&+u60U5I-t%r=8UD<6?s=-M)y~&KxONA_}pf9fnub5E2tD;kV)^J&4 z8E;j87xA+abDi9jbxy9WWsMn;NneO@zUpt>#?63Xe+;LLUTXCjj^G?do+qDb-w3@2 z_0&Vx@uU_Ksyb?&$3la7881x+#L=_fk6ic-??}Kx zmcB5|_X&*;gZyE$Tu#x)FZRM+-wm)7@^&D7g1bHjcC>5J36b8QNdnVrzFd%(y>ct~ z%nrP~f@5UtkZkm>%q0*XT}qbQzAzVG;^r+6CW7GO6>rm*y<%2g!fvs(h>UcJjJZ<; z58Ji&x`O8WRr`OE^aR~q_v*%vMR+9Gd@V)7?$_O}?8~rXF0o3%VXT~ny0Av{X z0Mh`>fOyPV>!4G{1zjuJzzR=yA0~k&_bo#W@YEA?r3`Z#DV&JF)Q${OSBd~sRcL&C zE_HLj_M>Bp=B~BSG;_&=Psu3#aPErx1HY0;3sZY*0FU{-%=kd+cwq%a+&j^C0XjR^ z1>eR<_qqF2)e>KT)f?k2A0w|?Yu|F+gPP}Jd{3k6(tDm>P{0(iI@p)9G;3lrDOH}5 zQe2ZbllKeXjR z0@-C?bPdPZP9*;|#-gWC1TyTF0g9{QSus#3%|o38M49uvNvU`O(B#0?JREi06kMOq zIF7SxIyP-eFxDShXS#lN@He>C%5YB=8OJu)V5{5c~gZ{j%=uV?T#`FrNbpVrwC zj{7>q@6Qb9cf3$NX*bZg|NbqaTK=3t`y}1{4gQlJlYk(OssWsiv>bSEwB;$<$e0SK zf!BVE1&^cTFSl%g$9St?#Hwv7GI0j`{hLXkkbXfzVsA{#$DL~~Ga~D+=G0KjBjSBh zZWUHny(r%45)|6tdQPOJs8`o!aD!&0uX^+;&B*+^rz~G03fByFWp28iv%QW(L3LZwjMtzE{y)|iWL z$H#y588rE2Tz7#xFEJ|C^Ft0uxo4%JxS045s}9LezUwSQMtU^|4bpLElRxl*PvFE< zat$Qiz(zIk`cXg?`NrL?olWLVxxr;P7ftaFVo@OGAZoIXa{I+-F{76z#)lPGL;#nTQUz)yvz2X zKeq&Z?MTBa(s%+CX+5E4RDRNWBF)foQT&1-iNa8(w@a#}>n9->9~DUoQAK6k)%a&l zs)HIutvrYZB@4t&jzW{BR}GO&hDC`!6rqSWAAT^NPbC+uiNG`|4iatEL9G>^plF1kk*QblTF--kCvExhZypRa;{p zTpS|ZBDysJgLcOtFy+p)!9`7RaL+nWzP!%!)rgdx5P#mZ&a>W`JY}xIn-+Hwiluyz z8uKTqKNFtXpoZ|T#I0HK=ER?5;nbXVYl|@Uj@W1qBhLJ(1aNRtqRxI!)Upi}A#6hY z_DneddEhY24Jn6_{k{;b{JbseS|$1oapat7TeTH!q719K1KEfg8?8yW6;>^tTGT3y z4u)PJowX#}bpq(si1gYj3^Eh}zZa z2!0bz_Cv3z6wKKid_KvIsgx|bbGq{}PjNA^aA0rd8cU(hPq~TNq^nRYQxYX@6w}hw zxkB#bB<=@FCI9wE-mBI6hODTBq<|l3^Di{Q0(l$#5UJSh#t?iB4h0z)cMQvdGB928 zik9^ZqRFmBUGLW&vPDj=PE$mKq%G91u*OKES+vAQmIWznu4AS0DoDmR2Cq>q4JJ45S7rj>gZh%?~=S&Y~7(;7V1(=kus@NUn}IH zc=aiDe#n0@kdtmRu|+RnXhVT z>u90cR9t6(Z)#@0ioT!Tc1ieY?EVsly-YvJ++tY(u!L{IpmTtd2_KGYz?+KEJA+rh zIMUO)rX4+B!ip2qX(!d+DiY-pkn36=T@Njx-`qR?)mPYIYiL=Pfei()Zw)huq>$3yJcvHWZC6u0GV~&Kk!&{Anmm3Fl|ZW@*jNH121sns50jB1%0V+g9?t zZ7*9~z1{90Oo5T4B^Lr8GfvgTP-rMx6&3zKt`6XL;zk)706fUF;F_NAmsuuW0c-jl zmu7Lh-0D)hF$?c;6}_*~lPw%F7aEdxP^$T;3vhR?qtQ{Gz@Zqs^sDbMT@AzvCxGDM zpJ&n-$4)2tCcAcIF(v@N&o?99NH;#Y0mc)$jlKW_6#{mu-J0^;Fujm&AH-LPK9dM} zHiGHsJFPwZ&$Bndsltwi zRO;k6rJr5gjBWmKvb-Nn>>z6Xs1X?RwUAI}Bi?GhWt*|UZ>)4#Fss)8kE?SG?j&lr zeQevdZQHhO+yB_MZF^$dwv&mSOfbRRyysTkbMC3?{@5RO*Y0OOd-qzur6qvuw1O9L zsm&agmam?2zZcE|2(wYWsSeS~TlGZaL>am~rYaBtpXT|PqOR>ECgP8r`U0?1HgZt; z{yyfi#JQS4<hrvxSN*PsR!NP&P0D@I2%hcoutL6MfU(`wj7eZ0aBZucq zclR4&BVW8X^qKlPh>Vz&SeEwh43VZlL?%-_jdHFaiv7Ha@wojz?|*B*gF7TPkla=6yKU0nAy<*9M9KkIe+!FyF&5H2A#Qiq@{CI zsI$)UIE*={wNh)?(yvgZ{FkjsZ&fbN^8;=Cd9wUfTGb7|mcu(;##C>~->j5pQD;5Y zY-q&ik39Tmsx$FMkfeGC&`M|_4h`F=OeESOE%amWk1negig;XnVX%N-n;`8aS~>>C zbvbt1SzfkH$Ti))@hKg{SH*sa7>CAe5W9%Q*8iaGp6m)n#8V-85#)-p%JcK!bf8iR zC9UQxXoI3RaqYp>a@tyA2Ao@;*!Wm?<&DbZ{%UFYLdlV!s7-_;G_b_YnY{JhO1mX3 z`ofpsd>VX^84N)bj7R{6nRmIzJNWqX4MHNzKYAQYdB&5$HF~&Ud*XA`!_f^c+$1`r zqYz}F``1S$IxJX9ab8qc`q8E|6pUpwq1P80Ca???kf{7|ZY`bWHF|=fqVHu$${H+K zvz#c)TI5X2$7Tu@aIWm%ee$3-Y!r`BRy}xqs$(jgnIYR5t$qQ(@v1{~ekj_WCbn&t z6NJ*?mamFT*9At~FSw0>VvVvMK$RxUR)c$FNd-aH&o-HgCu~-OyKjsw*v^|i?L>9M z_~MI4#`mvJOV>8fQcg6GVl9QCAx`4d=5PjtnSp^s8KDynZ$_01-GNFOh5BAOPlAw! z{;$JyOia1eP9i{d{U$HtG1k@-ac}NmklwS!dhU_BMVLyF62WNtDte8nngZ}IfP3d9 z!>bA-5#zgcb(i|~j7ppONd{{^t>goBE~2Nv_c~Nd8h=O*4%8VBUOR}sdA@E$2!~@nFri{;?lJB8$$dnK$92d7;YF4c?U9TOI-eYB#$(cv-r=Nfn-*jw!L#6H91hjB^}p+xE){R_jYHB ze}a#P^E1=_`m$s|!N zJ)U~L_P5;4c?5j_{RRbUKS)Dl^z*t9E;Ay%{c#E&r$F|dhAHEG*&wq<)q)klv&C9? z6K6FQ5xMEe(;kQVAW0}!&0_Aj#c4=>wn)kSb1bSWT_T`^%mavWn9xr?wuT`mRW#^> z%fV?co<-5)#BsJPL0Z7AcS5pKxrxnf+Z_zjao?p5D53Vgf-Lippq9tpR_?fsa$Y;d z^IaB6-y%$h@@0i~pO)r&&!-y_|DlgbP^k;|7Mac%11>|Ym#!`8pojFA*oLO2HqqT& zr9k< z>v%emeC__Yh{1GKi-uRa&M5)e_vR4(P_=PmE`?#zwh1t$v*}#DS-2mqEnouPl6_(P-Ypln8_*y3ZM?-w><50uCmawR zmt;FL)uC7?5h(hsXbnhtY>%9eoTmr=-?8rK684oWDNM6`fOfn@-QOfsl~P;9>OHFB zMN}Fwh2Uy?B2nx(Iuy`_{W5t;mv0B8h~E^FyYSM~Tgv6jyDgUeyDj_q{O{jSSDZi@ zO*oR64C4z?w9a~?><0P?KYFi68`}NFyqHa{+rz$SZgfPo z6Y$hzgUvO3Kv0uNRaercmu~x?S;(ML_ zHP*lJIowc0RwFwL)8PY?p#8s6vNnC*mm1^#@acl7Ib@+P=b?1e;Wx$meG^&M+o=Ei z&vOwc%B`ti4zd^5WbDma=gfF!pT2(+Ph{3$O*_iy!)#RqrDL7 zEV}FNPhzK&GdX8&v|C>%4hqn$vNs1X$Tp<1!rC^(CCffA$1|SWLXdYooCVg2B3Qtm!poqcKlbLWZ{JICXd;ib-??=C?1q z4m&*l0P>=PM}SVreG&^#W%|^5{FyT2GtB zgX%0lYV=yJU9zcM*dmx4d7?rpMqSux;DeGr17Cp*B8g;5h6#8X=c6bt2PVd+0Dvf^ z5R%&@K4>oNE?LEBdSlYny22M2hN=dOzV9)`Jc>#Mgg1wQYH(Jh%M7K(CeY_Cg3AB6-{L*ruDY9W4ir032n$i>Ku7$=1pstx2~ zg8k`DI9q~$k$f}-PC5{ySWiZb;KxB`#LIY&!3&nuf4Db-^sNyb0CiEwhI7JljS4Ws z*aKaXqEf*XUBa-p!8-uR8~p!YZ$qXDx3Worfc%wH=B98n7!Dy20d+jkUbv&HtSvli zkC!^yNgPqckYEMeP?=gmWPL|ieqh_uQd}t7>Gq?|=49NEk}|qP3+df>(5X3HtwMw3 z@yo3XOB@&C2?hOSsr>+1#P4$uGJ?m&fQ&`Tyyq4Mk_AdwpeJs-{Gn6pA5(etJn6F?v44C#Ml#7?@FWk@ zGw*A>Aq%*iVJRL1se}bao(tt`Kj~6Kk0ne!GO+@*i0F;QUEAq zeAIJ?R6q5SW7P9D$ydBoKkZV6_+S2{0K-y2qzgpxzl0?I0P)g)7sZ0bf*2PyBwtZd zhNu^c;(vLLzF~6;jGy*NzB;7<#7mrwud+$sGNt_~1PfUJBd3ZAe=RXLh5j8C-!1i%JaZ;}<9mOB<^ZCf4N3eFA5a;5g7eWX zK1lM=u#vIDQk0e`0S}6y|M0F>D4kNoF@P+aNRq(CIV8=9lfv}nj9r_uB4+)xh&A*E z6ih2jTLwlkn#HNCnQffH>t1p~iEic4I>gK@f7ZLRG!xZud2SALDgCHWS@CwbGe*f7 z7`r)%XPH#j_?W!uY9f;jZ>~ldjd*oZv_T8@rM!e42B9N%0K+3gWKcO=j*A^l;*$=U zL4-U!M_Xi#XeB`oL~b{MbKHgX>GYpzc}^o0K5hNab!jBbw#C~;&6LNxeB7b*_rv68niNu|mZ^cyQl6J( z0JQPD6wTXB07#Yns0DqJkJ5=-iTivJ5615KNd%)aqU8O%;tF9YVb$<_FQ6Pn<5yuj zf+32yS*AHJtn%dsl4mH6gy?JLohw0%&0`YZp{5sod*rn+cT7JWGg6X|Skqk){3o)x z&)Nxri1~^}Z=4*<#&>GX7}W|(Oq-A9S`$HH;<%*D9fC9Eigy?h)^ph0*c-41A!M9J+<)Rn~-KtH}9T2 z^e)8moFW`Wvn>^}j11@SNtYVuc~Pp?b}(7r`GS&PW4Ebh!&qvvQ&bsKsfVXoNmD>$ z8S7RW*j)aeS33b3+fOc`3_ayAz*#&BZY3`JDHfZa9K#_C+ya98y1Ni;N?L+7i_dsa zi-%x#?CIVi#X|mI8us73%Vv4e688xS931YL6p^@zg8Sw)On?5lQVKNR9umH*S@J8I4>hd0MSh`8>W)K zO~NsZ4nc>EwyU+6Vu4|rX;Z(Oic1Ls-u>DK=d&@ns6Zbq?3CTs)foBcpXGEhD%i1b zM>U$^O*hjfNAC#`W9BO0Al zir3lL+Afmpln}yc)hMWEr(zV{J{mUMn}~VWf(J82X7g?cXJ=lKC6F(6a^zkPpMbXE zFppNT<*x@ea>8G8zVDwF8jhz)f3E60W@1m2mTe7gWAB0v>f0kp0nSx*^&zMtyO9a7#66QAFJqCpK$=aJX7^VYdxO znQ<~OOPTi@IZ9n;0IoHmzI06bjU8pK0UM6w*&^@(<3v$^Az##9j(}CF3jR2)kQ48e zTu6WpzSIU5KrSJYzsPwo=4Ztq8)D0nt6of) zw7KceDpwU*(IxHTYWKDJXsFR9TH0`JLq_C}?3p-*%y_Ydq;PB?ifYj{d7i7Ie1LwG zjC_ymm5Pb@vJcY)fqZYLBftl@e9JY6c%3OR3izP%r_L-Z7H%Ep=X>GAhgYRQX+10s zdU zcB35Ja!MHU&u>HpAH7j};{&wT@fG*lsdvFE$Rb66&64?%2)~m0+WsnDG$zTNs8DQ8$dQec}$w+9Y zTw#eLWW;pL2}m9=(PT5|r_#>>e*?*8Fk#4ww7B3`dGR%xD3jzaiy)c`ewcw@&iKU8 zu%ThefJUgC(T&`o*{lhZC?|}}#LYacKyirWyAnvUA}~oA;YKBjR9TTQr3xQ1J!{P2WuqVo zm_*AnfgO;GXGJ)16#IE7$1?&0%qxtStZM>>z?_?*O`$DTa}v}hqzS%fZwq4|admzT_vdd^`aI>+89AK)!0k$T4FU>k%3iW=pPZ%NLf)gsUZm9_A>q`_b@Ux z<|6fWvmQtY2C)t1#Pi#5FAy4#kSsq4H?!)X>pb*R(pHyBYPRuF5 z+vosHSrN+OTnQmN5$2aew`Q{@u?XrDejS)ST&+N2*ino+Ayme(0ez=5GCSc_2IO{` zAr7hjp|Zxqu<4bzPQ7C5?4(fI#%}!$Vrb>iE~P-$ydj(_v0`bMP6@rj*RaeV4s|lp zS-!S*lM%U|Lu=SYxGPokrYMR}C2S8qg$R|ZulprGlf@xB*5E*cp z5n2kwfF%cVzQR1LV5 zAt(NE&;!90o($!ql|Jw42+(4UZOA-!%}z^p9XF}rpdwOT9bw(1x{&?IOmx%=O;9yQ z-5vNBgTzqU!QG{YR)^S=o#-z+6L6C!C6=)`oLg^1MX*i_qtg}#wFtvI`E#(N5oCtk zLCl7iXKoY3Aw9)e7s6_+@FS?TjR4Y0xZs*sWPKNwz1+$&Fq6P>1=t?8Z+h3jY1#v8ZyC0wG^M&?8L*$&@VX2GD10C$`QvhbcSh6suhk1U9sVtUZ?%Gq($lMr+oTj$KVa ze`#mcACiqzjb;8*A={hAzU5htx6-}bO7|gVRy@fFFxktxv|mFxFVOc_O04~ch7!xV zvqaHXQ>Dp7afFHPRmL;i-xpr@A-Svt{m2V3%VhJ_0`6R0yxnrW*OyUi0|T2&X8t@s zX@`BD>>C#<^Ao=C%7%_b5#1%Owywi~m-aYzclkVB_3m{_Rb?b^i%GVYr`?V|H+~b$T9-6+1g6$>($1Pa|@Rk2U3#MeXIi&Ba#u zlea6}wRJn2Tef37qHb#^kF}>fi!)AStwJCFRW4~*#_AhuDA@1ty1r+T*w70=10@Hp zPo1NUL%pr7gDoWf(nHWneMb}5jeU;J6>ea^;*Fz~t>f0(+LrcmthsbKD?eUATHiKP z#1XE|H$y#!`fzsf$YWcKGQyQ(*c;i5Mm0*@4f`K?_`1C8xq#j78+%N4t;2S^f+9;8ITix~mnN3ffq7|Z{wo?;jkW#C?*7VFhrhqPe#In19KcnTlqtt{ z%-+H3&aS$~dJWQ*!YZCAIKg!FAZ6AK7bhEs(+x*>A&9rN4VhK2kKz;{DH`s`v|@O5 zh%ha8(d}F6l{@kv? z`bKMiZ4YFy+1xxYeANV?ZK`j$+yv}-WS84GtEH6N=5H!*X({Sk(-h;qRAucbDPOV5 zC?QUECA_4v9H1=PjYHl(llCdYjI>)adS&qkCGJ<|PVt;kX`Pj*Z7;>5J&{^D3f>CR z%#FK^rlO4f7{sf*@!EPT8@p&F`o$LZM0q%ZC{qzwRjhfe2H)|-+ACXkjUCO?vj znV3xjTyq1Ebb=O;sIrSiw^s79-!L+d`4ldvo$9XzMEGJ0)$&wX8y{6%0z;>gP<#Yr z;*t7=+GCLr$E%u=eAW^*r8b~lf>I3L37mmx$eRwA778bg>Qfz90xcDSWXlIy+&fF(RRnTM`1O49Wxch|6~G(yUZ-X5VeQg7 zyEs?4GH{#pm=&Kjl^l9J74BIiVE^B z9^GF{J(GKo+ECbLG$b0+D@ zpMCi31}HNE$vGE(p6-L^k~3fwiR5)*S!d-t=Y5`8tqSuC>zV8+46V5v|&}rq1M+gFQ_HoDg>|Ukij8PGldO+u9(l?nqK3NTaqPD z4S=IN5f$;?{KI!6>O)x|;uJ4wQRBMro$wLNNAD{EQChaY3>0W1VRoZuEZJ}1&`&7% z>an4oz=(NRpU2a(L>{9V*wY!&GwN0cp$M2P4KKq=%ho;p z^IFfvQ=!>X#lD2&uS^DkGWdPryOrV#gh&cZK3n3x2D_rVd#P;#%8WtQkVAx)=J}Mv zuS?hUZ|7#*Xv|RvZVyGjnsLpCr>of@Vwl~X# z$d5cs-wSm(>-g#%=LQw-o;Q`vqOZfhG`J5Ql5}fw2mX~j&N;jE`hk{yhNPgJQ2-E9 z6vbdtgOy#TkzHu>Er9mQgPE>8wz)cwfv8uxqjO8PP(2GH3pe6?FC;48(yhGY8D0Xz z6|WF@)T^heGCKk{6q7qr_P}isv%13~`O5rNMvat^T#}!Ktag6hm^HK_?r*u<@>i>x z3~~iMf@XNI{mGiKZiGaQ84>wR8-O79Z)x6_yL^{2(2v(Z)CcdoI(4gqw4~r>m(?I) zY6fZ#x!J?OdC$%rMP+W?GDk_c zS1-=XyYH(t+mT#6S@K!$1Td=ijIBz}apVmd>yvET6Q$_uVzXu0iEw=4Y9o_;QlXY3 zmst@swBipj{^vXL4B_C*d+vkmtj?-uHh3r6w~NR#pUAWRKbN@5&ZRM>ATG_h3h40~ zO@ekTW_l5&RviQm%V<-$!)_JdWwbzr{gNu4_z5{Bwt*Hb+I$BfRYQ!J*?ZEps zA(U-BJ5j?$ZZKKM@eU9;fduqu4t zC-97G#@BDX-!71blgpoy%UOg1=uetYr)Si!Is}tf%hCbqXSu`6(grifkC%`sGkB6M zT!?rLqOIS#XE~5A#cdl&JBBxlrZ1QplY*R)c*42`TxpFJ5ZB8PE=yh3_u&3cfQ@C_ z4O4dBh=FXtom)7w?cdxafTHqr(ZwL=E_FI(?0k<{Uk`b6Lom5d2;(B}dste#!7a(- zbfLW5kpJcS@d+nuU9Q6&>~fR%$*fw#?-%YrnZGB2%P(Zvb~P`NTv{hgTClEHhqfTi z4`&2&s*z^}9(4(iS%2)U&td$m<*8ZYY7W)$0p4POhbo-+3K*4tYQmTE)KcW54d}@t z{F;UVCoxp@hq{n1aEyK&v zOV--&+r>G}x*SC*s%3e>bKiJdf1|SqXZq zeO2Yl=Lxk=cl~>tNGR`FK|Xu33{P3vpJAQ=**hUJR0nhI{D!=dXBU#PfcrBNBAJPJYla*(-|5QGu_-IoL%|leEf!AzFbC5AogN z@)B$Ff)Q8nyJjc62M^Bjlj^;{xB$-9Tu7Ihm zSHo4LS=|a!ISs!sqyvD5zSZ5UK9{Hp=%=KKH*FtF)be@_X?I62aTEB5f=W#l;lvp3 zR8b+W_d6K)*jBLY084vle|u@!QOx7ES*A?LnL3QvbE1lC>^wMlk7HwO7n@)9f@usuewGz7XR1}>to?+dFB#dhZ&noFELU=v zmC&i*K3}wRi{NA3JZA=MpFf53D>aAu8y6Ut;Jr8vpQyPjZ&ZZ1cEpMAjBzj9x!H1v z2nRP#O6<)yIj3sevxD=)kTSSljHa#3gVvWCFl|Z6PiwJdH>^jbrQJBZPu}9U5^>$TuJe@1r6V*(*W(i4e7@vH_QLLQ1{({_6J1HjtN2mMZ0%ZZ1gNT$m zOTG)zgew1x$GXkH|5-gCiQJ{od~e?PF9Bl-XBM8N8<+p_C!!=fgZ2#8+5MGu%FS(S&*_H<+%8TC96(TD)1^uJ(zDFbKsZ1VMDB{#ZVmL>{42O-|aE`dP z!KoV)b_8tX1@mcC3IpfPdN#;6IoBHlCY)sjXSTdyckYZ(U7w4ch#>WY_vH~I@NNfn zP2T>n8C`w&4a0Ejok)eu@2xeik4hvb1=*W#C5$^G)vd}lTW|L&a+0ny7U z_g|nNfo8vi)Q3LQsfFK#S|uJ4^x$f}yMmm2zod5nv^8*9odw$I8C^0n_(_CL?DTGx z0cUn3pdthMAprBAHlvUk-}tJIDt<1SO;yX*J}E~joZvUAgyadxf`$3RzP%oKPxAPB z1nzEXzIny*@s}k6QYm47n=q1FV`5A7&76+fwxS>o1n{2;j`hOtO-cJ(-^Nz@nc)^7 zRx$c$uEwoR(-_ZNZd&-|U_ji4p`5|2P#fJL&cgsWErs))^OF&bIK&>@2&3q+9JZe4 zh4X#$-%Jn0_2fdj>hBBIuw8JFLY}1G>WC48h{bK}z*ubc<_gC;RgrIlRgFk5NGn8EeRTTLYmxNAFmy{7QlTh#yHMH#RPbG(984585> z&wtP*c;7n4sSe7fjhr4=;H0H!Rx6&e0q=-HL!{96-|woaLXqYA#W%u5G-z-^&ytfI ztE;-|nh|M@+;&5!jfVh`a;FMI@Y;3U&0}@)-3Ti7w3hGjj9kXT9D|9n9(h;(i2sHj<#b>{DJS@>Y`Iz^ z_l0y}))%FZ$i)d~(rgfwEKye8JuR4E%9b%GzgnZAe(;Wn{t0@Ad1M|cT%e>SR5-*Z zfdA)Q`@hCDd2-;Xlz`_-V5t_$KhDViWzy*y{Jo!12mvev;CC1jLJHfjg~yGRE-dm4 zvllOxf-Y`Ki$;jrW5G3n_AT)u-hm+wN~CfDLI}gsMN?z@={S8^v#0-jA|8P9Lvrk3 z(7BNrkncfxRLhDMW-j1aid#_ZJRKX&ptKE94JxHt{1~M$m`}~h#J@m2d6Q@)rUSZ7&V9%uh-p=IsVt44~Kv}zz2d6 z>b#lWSZyq~UJ7$U>xO=YGbk)G9SQ0v%6M}umP7P!jPdA3ZG<$^aiq;^cAHz(aAzR`i2bX|a3yk2;0mpzYr-FM#>OSWUH!mN*^!eaA{{`ybIkfurG@|vG6M|MLT z|MrpA?+I0W@RZCWE!D>OZM^JY_#I^@%p5RfC&X870xGXaNjRfS9yXqE3*5Ns_N#WA zxa#0>DyoGhb~i1TEj95$)Wpj;VP^_z0V__qU#DzT=b!-EaC(PFzDQQH@lrTaOUa$j zFsJb6>uY=+3U?a*dc^=)S~PPlHP;fKOJ>+mf$Xb0Zqd{Z5aJ7FGoSlJvS4EAftX_V zf@(QOg~;EqYVODscV&{NK~%wn&E%J~*up>Rjf5s{2ysuHBqS8U$PX4dye245gAo1jc&OsIH- zsC;rSqJ0r&eKAUi&cxhr8VN7S-QJRwric`*b9w4=^p$28MRv;SMG_&U?FoPh-k zEW<5t`}5KGw?x&KD_@OvS5S0HQ9qkJBpWgAf!z_;TMK#0?%4cGgQ5>3_yqn^USig| zT%7LlHe`Cr$bki}g!<3KG!&oxl_3iUEc<`wVkPo_5MvQoD`*Noz|Gemk12l!G3?KI zs^AF(M8?)J1VTn4JTN8z8Qnc{SRFom6bwF~UiX4VU$))h9#QU-o?n3UHny|chMUaZZ^c5}hOr6AfQh-Z7t%tS@MYEp<2eLT+kfyFeK@v4C;L$($u7>#?AQ-Gsoa0 z4F<&ZjxvY&#z6oM)Lv5$aNywR@#=hMTB1Qe5>J;Np)^x`MsAxSRwZ*SZg0`;$J%)8 zx4gXkbtt@j(o^}*g!-lD?FQ0t}6iP0neCxN<$t5Db1{%IjGsZVR~n z*GcsGMb6#)KMoPZ4LDn;7ojl2?-u9wF?>8G^ZN-93XA~a2uDT=ODo5yQg-BXFRCS( z-&Sp8WFvHwvXRc==@c>=z$MCt#62>~&@3uuXMYNe{*C}a^YaFlPJ@#D5x0lZo}U&i z4G4vuW{R;@HqW~xYrd)#2red6`Atmbt7&8!>iTC1=>psAnfNUOnc+G<@ymzgqijI^vrk+{825Hf?RGWfV9z+s~9o910ZJZ^>@+JAmpp|o+jki2ypClWD zq1aU|k0@u!(waze_W|+03*&#LS`Ywh_D5un2y6-<-U9+wp;JQk4vH3VOc`aCUrX!$ zIfoMr98naLq8H=)FH!nf6Ez~Ak*wv}^;|AD@5j^nDB?67@PjuRS?U2oI<7kF+8VSn-Jyp$Le{FriSpNv_r@k&`|O6YxOp=nq2*LE@#d+ zS50uiqy0%Dt8#*-R!VO~KMH(>90NOj(aBk{IIcVt(vV~ze1w7njNt2rYDuDEisIr! zborOF$@z(SlVlylq}TKY=6lgV$Ug>w20#(+g54$IO44QQgnvcFbz*sj#UooU8#fzh zc0T6c2C6)Y`~)^L4BXc9G_u}pyf3#&I-MB}$l%*Oq8>53xDHWU);9=bI^$covcdoe zN~;e;_8fI;ilg0na=)Sn!^}g!67&>(DvCIc)=3XKujk2=Xo&ke|r`cQD?gal(D_ z2;$B3gxMMG(LEqI?FD&dzQgnid@mdjodHCE6BrB7++#gC2T^7!!tjmy=^S96wt&nt z7hrA-`Uwj$8=`qdy*CdioYI0cuy{iEjQQywz@It3x@PiaE38KHnzIP5_&M<=anFP?^!$0W;-DU2>eh%!=-jhC21{GxWLw!zt$^#BO zPYLDUTA%^oN|-TVM7$8Ws|uCpsjfw>nzX5|Pasx0W}dID$gL;^-jt)UZIc}rrdI>sK%InupQ+Ex|Ho+Qx!R^F3H&3g_Q@8rXKGL26i&54W6~JW&ca}`z zT2^LWIkNxk%j61IzY>GjS<=LEIb%6`U0SVd$;=(?j}utTrshi8<|$rVR#z zG3&XPL0#E(svhk07|5Pg8pt&FLShZ~YEKw}M|P_!jgHo!gMXGn^MTd&?CHeqYR-wZ z|19G3g;|@*6P?*6h6A^59RO|Wq`NC8?Y1&3KtJ7`Z(KwnB98<=#j?e@kwxvQq!;Fz z{Ug8sIB?Eaf&MJ{m&%#{{5x=9O&2?6)?%D^G-@KJO+|@o9s_Hb=lK!8MrT4^-OMXzVIJ#E#dXX{l;@lj#^B3OnTN@Y;@S^ z@U-FT!|LJe!@{ETP7_XThmD7khn0so!)@VLaO=1ZOgmN`lK`idLyY0N@NKwXwrj)# zjNpI!a(gC6fSQcQ6u>+J1wk~g75|l_3>auvFe$9jvQ0>YQBb1=H)|XBw4zZ=fTB@M zNyDU+sc|V0lsYx$7CS}qsU0$TcMKsvN`;l2EW(UWn4*_Y9izo(Q2s!c6jivi6;v}B zEU9KvE2wg5bgj`uT+)Z^yt9Y!yt{_5ALYVYPBvlACOToBPW-}Le|y86O~axMxde&S z#8PcE%M;UVqno%C4UudXEl?lBKxe6SD3zlvv6L*3W75(+P>%f%_$t$XmMibeNiJ|8 zpij7r0X$%e40B9iVlZJP-P(+3OkiO^BfOx`V%(y~&Ydt4q*iPbmZfvzC@~_!F)$&8 zQ)nBcIp0YbVu>B!%ob@a|J0VL0ad0MD>>|pTO|XVQ-C0dj6!NEux~!BU#=3cUxXMHzT`-NBwya949cwww zFTNc@8+URQ@s*<(^+N8-Ny`l^qgrIEtAqY^UQINTSkX5eBV69PTUTLsXbH97As-R z4d0@ky~HHanjKCMw0u5O3Eoy~i`R|8&!Ztf+D6v zGDbFU0%s1|cIu9`1kV@E^btGo?jgD-8A9p8XzuOKo-JE#9*~UB?nCTt5+RJFm*t?hyEU6ugn6&3-L}>64oye5nSNMP$6Mz9!onHWMI1P zBhOzp`6hOt>PKMZc6$PTpX-QhtgZI&5^{J zQs}bFPh#L9FOah|E7)XazU>M-)kY=zB&mYFsxsu#_EiZdq->k8U5k8iaq-2=0x~&{ zax~s;RcEzBU8~0c^)T9XwiN~)A#Z-!g@mEbm@8nD#xsfx*;N+Yktjeagzs1}TYN(d6Plnmuq|copax)sc#?hTtk%+eO zoz|T~#6aBun6{iUZ}_%8CxLpy@@ypz`J?n_jdMMGZYP!<=O!kNKT{ZK+DT z*OJ{07^e`DjXN5S*m7BJQ=Na>;J1cC*|A*~AG7E0kf8pz->obI;?}KSW?grq49hnaUI;q7JUJMEo_&nl)`RYwLj_m?BUn%E`wsq| zd_R!a&4FDEKP2Dl0|!`v&|VIw&EUJ?M*N<=7E-C~Z+xqgdhiay_0`6`pd=`F3eDnh zc>9CWp_YxzSTWm;lYzrX_wn!1kwogT(=g_H!vAjI|5Fj8Tc}z76U=~z2n3Wdga<4x zR;jK>Lr$$CQixQx5r$w4x0q;TQM|Ex`_WgWe`E3rlP0fob(Ww1EzEC!)0=`VW#n_R z;@5Gv>+jwFO40x2`hXHhks*fF2Ne;|F&aF)vRFw4TUjOBL3ycWvWZkJK#f3-=C3v~-X8ixejrP> zQ>9TWt$&+Fgl0JdM{TQB$Z}_FVk~GzS0f|y2?dDEib!9vPyz1?jC<8gtf|Rptmz{< zINMR`V0{fdk!p}Sn-lHFzkC?18{ zKx8}763{tWY|NWOX0$2xR%p&TL)aDq1Aqt=fur4VIRWEG>Xa5a0n_Dqa=#$PizO+p zh=%i1sW+T`sW*)MMO72!=D7w*%g@Y&r8=rSs&A!d@rnK8Y^o5(5iY@a5-nz(yT4YPszz9{^UlON zYwOwNnbVaY?*Mhbfpzx%BV5>MpXg}mtB*Oz+ko(L(*O9IW7TH@GN8_$+5p}si^}Be zD^rjaqV)Z>Q2zFq>eVq|wUd&e0W74Z-b@TPaW4^~phZ%RWfc`QjIUpd1*}gtcC&!1 zchE+;*lkk%B&4;a{Z62-Znq@>ug|NM<#C0gVNR@jOp^oqn*EqeLww&-H#9KspD%{m z(l3W=Vjo^ z+8OTWk^D!zeE(8q(rOFr@QTa;_TOmu4-x3p960gmtievKYWB>G=ClaIQ_(BG_?rw_ zf|IlVHI`wZSfvfof|jD>O<9Acsw~;&in#%r{qR;eu(hz2c3;iIzrZd4OGxI+580h} zBW(s=@N=}QH9ufGBlyI>ao;EyP{6!2@Kd4|S8RnRMH`Pf*EsDCK7}Vn8;{b{ZM)Me)~)LncaQWdfs`xz zh3=L0ExQh>`rM-5TbDe5CxTeyKW)fQIOdQ>7yDlBAEq8CPde&qCYmn9SFIH#!&OJ1 z2sp2}qHWpBY!H9(&7BGnvwe#U{w^t$su(D7Tlizy{1%p{Ax;}hx_@^Kn<1Ggj`mX9 zomNw4cA(|=f@8WbDJZdr za`T7(bCu(AJ;UWx4O7!rz~%JvQ!Bfye0sG|#uf~3?&vXC(Q5DqL-c}jga1jf`YD+W z^YfcpdBgPIVY4Z_axj&I473c?w{@Hh^cWuTKf!bUz7nSCf;3%t#XfA4XXsARmB9|mk1#tC5ZPUVkK#Byzq^AfW_2qmVLO75h9SEcvY>1(2}_Hn3Xuv8Y^#&N?M?LG=g@}__14u$ zu26v$EJYRE!&PN3UBwoWjI!JGTnN@tMny6YS_WQWYq~9O&9E=%`mod~ec3I?Ei1$* zAal)%q#$I$x5;=ck zm{)YCWf?k+E2CDVCiYZ+_Z&!j);di7fXZvfFMiT+%bahzk1E<4gBX%&(i4hJ#6C;T zUH*>M6yI71?RW6ev`}~ecR7yWh4u8uifqON)a)+YGi2mI=>}nD%n(Rnkl5SrQxy;B zv+yPPin@LlVRTF=VFmjlgf0E^9$p48-Ro6Q4qiwa4+J^I?D%-d#Y^|K=dA$8A+Rq| z;||CinCksMW1|0D0gj5#)YM&8&=k<&R!=rid@$Jme1%VeM^Z@5;sBKZIG~AO2&iGX z=Wi%kG7vXgSAuEO&o3j_1!~$x&}FtIg*-RyMJ<|HQQMJ!f_!~bGnXyd{T`)ouMysa z69uUo$9P=auQqvHp02Kib^xHG#&j^Sl_Z<}`nYnetR&)&xdRzN?I;X_K-8a*D%0n1 z##vk#gFFtj(vJRRzvAx!WVms-2X^`^vO{nKgV2?Rm&Do}3xW+uxQh+@+FOJh{QL*3 zl^nd6@^2=MHbh-BO}w})RvQo2sWS%aOjV!bp#(fohV80mf7rVlCV+sNQ;CE?i`VTI z&4Nf3KaC^0JK5^8%VdPGe=B6!=-iKb4wPzzW`Epy9T=QR(N3=cIPQt-JzlovwhLC~ z(FU!D>@MYVlZU#Bm90a}0GV;;ieVIX9fgq#LbtI%rm-FBm$1uAT0}cq9;wTB7|IrB z+M2tPpQ^VIJh)zA&0mUz#<)rvn}ZCysPG7h*nVo@>=&_OTG8Zc zVjlB57rHS-OI9xcVgwdj1Zn4?x7!OnqZl1Q(XV*D2QS~m*Jurktc-5XPTFjIM!vlZjcYs3S>@axyhhzsL zM$acCCZ|h-xL{PIz!n%;QIROeKbLGg!2Jbe>3=`hJfIGZFhod16HxX=%lt_wL(&jn zSSSXY=m(=w8lzBlPy3V-1XDBW7~65U&it{_B?W-S<7E?!=FuH{q_$Z>*`8O>kMph~ zv>z|+Cx-tWmHj_NF2_@axIx7LKj5M;NQ7C@rGMBqr2iSCY#b!dv#j(>?+OVV zLolbbjne6uU+=arYtAg*3!58+Vt`y(W(1%b_I^(5{sOzULC?DGeEOVjzs`E=JkIjj z$z=NaPi3q5&KG4jDpiMRGLKnAC+k5ze#IiPkD8=x5CBVn=_*ed3(rfkC4&keMmF(* zcmhUJyYH#vD23f7$qROa?EF2Y?uogM`0zMfyOw$KLj|Dp+h@fe`%|At1?8YVn1~3W zKB$QZp+C5Y^rAe-iS(j9ROKC;?j9FnC`q)v!W(r_@2@c%B-|b{8^qtP7@&+vC6lsDnW2IOGF<#d;jXsE*N>bC>3w)p;4;45GU9#^<6e{@EYZ|W6PhMAtuH3+L6)g>13vfdA_ZH3Ws&dlV*sIlUSivU!`m# zapnEDy~6L+tEw#9f=b;{*&^4ip`)-D9~3;J%&;WsHdjPRyXx#a%W~B^iwm?>evj?O zsJ>fEzBN{hBd#KO{1y{>+j5-ez=n8%EY?^AJTWh|p>sHENd+RBLR(%h^*VcZfApb? zknCSGO_kg;sg=B-TmZ2Fq9&UYVNtQtJVsZWXI@pj_1T&|1w@B2PlJICPpJV&FLRim zh}Uo#N%k1f99`j09P&mPt-y$QrufqNf?e?XkH#=uJ=1v0XB1+qXLv>{W|o3o6eOEx zI#xVJ_&~b7%c#6KNI&`$bdg+`SM}M_AVKtp^t>5JKgN@WJOES3;Lhw+rAwLiWTvFZ zz>Wk0A~uzF8D0+t4R-<)o*Cj7N`EdL%BR||AK%;a*3YSCMkD(D6+95SBA5Se%)^k< zf2Mq$wVPT62O-{1mjtD}XkO8Wfln`Ed1Z+~6^S7E?tkg#7iv={$B3ra_;te)=^JQX znt2mtP_w<+@B@$oM^06q+=)D!=oV)9RFpdemQMTn!Tmz`&Y@!u$Jc_pY|qBZw|CWZ z>6ZDj&c3vYe374=WA>gMYknP6PpLdE2pG~Dw4%qkxNlZ<4dV%T?74;3TThNqYJYHb zMP5X$&OM_Ps%KypHybdS&uD3LAVN>=n}v1TmX-^on*wM&o?4&&)wwRDLj+@<$h*2k zJTSX{a3VdJy+Y&8O}iE_Eo4$|vV28oE~;4ms_W%qkg`>xOuVpFQcE7a*hoCk>8~*@ z$)Tle+Qoj`rQXOcp;f}V8EAERzOe(=( zg$F-KY&MmSsNJYBZQDG8CR3C}f#s}j>Qn!eZ{S$6Fv`8ayMhfxV&p&7h5Y1`_NIUD zkKmd9{Suj3@~e3fy#CMAU+F%;<};wxtB(T!K!N6;46b<*^IVq z^=4hBRWCC{Ci3!9=7+K4D%~}XcI(1F70r|*l8sCQ8)m>3voT%J5~)FQhhYB{EUFCv zvxCJ{VmK0Kr^L+~MynmGNb7Dd=2Fz;kXf4qA`xfQ-0KJQX;i5iu`^Z{M%C(uU;G@F z8_mfY%%(vzkfdTF<&ErAJ!Tdia@M-#pnX)S|Esa7AQ2RmTw{!hS*^a<8MUNdRb(7f zsVz4oN{dGyN^8Tpg|f(tInaDpS&#y#bqznp4L=saE2W&n$(5X(rqd>NH`k!5thU`) zJAgVdny9-xUT*V@#^0-p+5px?AMh;3vxZxv9p;V0VOCkA^hDXoyN$lSlph^Oik&x! z(eXuk($;Xb2|0V?u{!^&wN_V!?+t~vQ(-@4E z!R1$KSCMKB;sM6BSo+r_5$ri=ibb4*uEa+vyt-oe~dBzQx*Ba!|c9% zw+jZ}_zQFDPa)870NLmZN*MW%t6=a1Y$AkPDbYR#;%->nu!|A9&D(uO$>;r?fHwl7 ze`15+peBN@##tjuFw(4^EzQ|kI_4*;EsMt$dX3RRU3r>Zutj#)4f&ZB8kLp^vXxR5 zpqT1vsj1abMrSezKX-GrrDiy>J$fSr z2LrcpW<3#^o^AM7T+sHJ%zTb^W|m%N zF(>|4P7<3tpy&=#*B@0y?-xw-&F>RY@jOS_f4T(0l&o2`sAX^eRQV^-43I|0j%#+7mhA*fjCoOGS8L_G z1OzQQ;-+XG45V2h7Jx{Zr-&4l(flr3vB5GUu+6MjAnWe^M3~yU+;vQ`S)5F z(-gN3omD#4PDA2@-eMQeL$a-e78F!!di*2dBE^S2)&W6P9q{WNgx()!WF0i?dUqYX zx2tJq1@MqW9cvix*Vg;P5eB&(&S96*C)F`*;(@&72SY8;nypG+8M-?c>9Vj8sTRCl zoKP^V$z^fr^2{gZR=l+msTVw#M6s=K5W8%jfUqt{%(X^h3mQfd=GMbeLO^8~Ty(~u zeKqsi@G;f}3dk)gE-YlS^N0Kf52{Q%M?f6QL1boX-{bNX-&>FB844=X-bj~eo>I_t z(`VqC5|fxulg=~|m9Ve}-~Rc3%6=p~I_-+@!3tPvF99eOK+(a}jM2o_$i<~v)5>MR z9L4`&G=+gKkX+a#gD7c2QC?x<5<(|YSz0D53BvNEe6_;F@nSK7$9w**2U+$y(?3Kp zaq-(clkH>q^g&MOUoA6a2i-)=MOm<}^zeL7<(9?Mmfv==f9LbU3!7&a2 z8|ejQup8|PkhsgpaCJNZ?(6l3sR9{Y`gtylTrMLz{Lh^Unw1dJK8ztNS_!$SSrgev zs@1S}TJ=4eD=y(^eQS$#8UOA`qIBby%rH02 zE)A>_{EexLjNK2KJiD7ZZ}k|{MO#`{>w|?g^*9hFfY7BDqDEgvzqmaus~dl^Rw)(P zsoo$)32V{%)Vy-o&+K&WN52IAgue z*F?BKoxR1*ngZPM=ZQ3O$tl(l7#1HHH?2)FD+dY24iVXoG(;`<(YF>dr%Pf8!MuaM zxW;Bd0iedj6f}8c+-Vb~q$8Zk=jQiE`nwp|DRtk)$J}^1TC2HZj=}%D76A7F=9U=2^ zRqG$^1oMM68u`v49_W=nvA5~G6+#|=`GF`F0$L3=JR#hlbUS}p8w_D-q+P9CK5JDX zV(~ltQjwjo_F9^yUx(M$@*#M2i4;BM=gvv6hLr_pmZq?Dgm`u9G@)KS>DQ=(oKX>~ zERHz5KZCW;3Ccu8o$bhzg|i=mg3NrL54DFhs!F`+3c~ihB{fjJVeO#kDgbJ9NlNMU z1I|5zr`vQisRIHuVv44Cq%gaFrv*LT^aQD$VAXYyRM0$wlw$gh5~U&z zS8Lp$j=ZFCJwyg6-KGc4+=d1*)f@JI`>pnKJ!}5Og)~{+0kPc7O8i|Zj-SI_MPYf( z&}!iW*i@Da>3sgbGT<64D<<so>D`ghLCHrfS^FH z@u=YOL#2Z8=Y%?_`HaCO1dlxSsI!e@{;p^YS%%M3&*~@%sKfVJww{5I1yd$gE}F}60mj)ll^hUC}lZ%`%F3H={mLStV#cT7C2U_sjs*#ixV1!QzSsKSP5-V`$GQgt_@uk>edrtUa89$P z>;o>Y1`VLO=a9Ih&qxNdf#Q6d%xf{+=EuzgTM}n}(`#Orj)kUDOc<3oy=YJ59k~VH z#>Im%j0mBThI;L!n(ToP?LJssLj&S*$%~Fie7`j$s%mz}$KkYi+qJ$98Ys_T+2k}c z=wE(&7%J6OsD&RkwJg*4wtSD6QJ9Py$HFenXT$(vjIgFoAkc&vOsSawuHozqhir-W z|Ko4)pEBikves?udzG*l=KmX-1C$+{UH|{!UaYa@j;?|6smMDvd%!+BzbtuMs%)81 z604&uZ9`Fl`G>rkJz$8KUt!pE+?3LsGGYdZ{tU6Ln%X3}?CdoK$<&uwhxJ!5ky0VU zsb6Puh{xyA_w9PaBG>C-XXgtnnsaxl64UE=-ME0&H{=6%qS|@!LEe$MNmytUCE+_s0 zxln{Q-a{tc8b`Hz?K}YGUxoQ<2Gydxs(ym%b`mOf>X?V+SRH~#x)G`138hnT!pyo^ z6d&fyT1?dAy{HUb;tpXB zMve{Bx0V1CycJwY=({~n{A*$IU_5*xLFrCpqh$-S6>|N-lTLh@Cao2r>$R zF7+JG1MDF4J*~!=t2y_0+WzbR^~hM5XC}ds>IlO%0AqLo8{5+N)4t1HtUN9lp+<| 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 z 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

    F#XqH1&oT?sQ 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 Da9wLq diff --git a/java/lib/mxgraph-swing.jar b/java/lib/mxgraph-swing.jar index a2a88af79ddc5c87bf553308b787198a4b3bb307..4257dda3a9fdc949cba11d4ab057f96913450129 100644 GIT binary patch delta 93149 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

    }#Y2nzZ4${NJL_6M$DcDi>4w>E0Tw+q^U~nM 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%0As1ja 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%0A{oQ!Q%B>FUl2# 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 diff --git a/java/src/com/mxgraph/util/png/mxPngTextDecoder.java b/java/src/com/mxgraph/util/png/mxPngTextDecoder.java index 90cea9bc5..bc2a2b9e7 100644 --- a/java/src/com/mxgraph/util/png/mxPngTextDecoder.java +++ b/java/src/com/mxgraph/util/png/mxPngTextDecoder.java @@ -9,6 +9,7 @@ import java.io.DataInputStream; import java.io.InputStream; import java.util.Hashtable; import java.util.Map; +import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; /** @@ -76,7 +77,7 @@ public class mxPngTextDecoder String key = new String(data, 0, currentIndex - 1); - // TODO Add option to decode uncompressed text + // LATER Add option to decode uncompressed text // NOTE Do not comment this line out as the // increment of the currentIndex is required byte compressType = data[currentIndex++]; @@ -86,7 +87,8 @@ public class mxPngTextDecoder { InputStream is = new ByteArrayInputStream(data, currentIndex, length); - InputStream iis = new InflaterInputStream(is); + InputStream iis = new InflaterInputStream(is, + new Inflater(true)); int c; while ((c = iis.read()) != -1) diff --git a/java/src/com/mxgraph/view/mxGraph.java b/java/src/com/mxgraph/view/mxGraph.java index 264e8ff41..1d035c8f1 100644 --- a/java/src/com/mxgraph/view/mxGraph.java +++ b/java/src/com/mxgraph/view/mxGraph.java @@ -194,9 +194,9 @@ public class mxGraph extends mxEventSource /** * Holds the version number of this release. Current version - * is 3.1.2.1. + * is 3.1.2.2. */ - public static final String VERSION = "3.1.2.1"; + public static final String VERSION = "3.1.2.2"; /** * diff --git a/javascript/examples/editors/diagrams/swimlanes.xml b/javascript/examples/editors/diagrams/swimlanes.xml index 304457658..0b38f4dc4 100644 --- a/javascript/examples/editors/diagrams/swimlanes.xml +++ b/javascript/examples/editors/diagrams/swimlanes.xml @@ -87,7 +87,7 @@ - + @@ -105,7 +105,7 @@ - + diff --git a/javascript/examples/editors/diagrams/travel-booking.xml b/javascript/examples/editors/diagrams/travel-booking.xml index e3d5c8422..b408aca63 100644 --- a/javascript/examples/editors/diagrams/travel-booking.xml +++ b/javascript/examples/editors/diagrams/travel-booking.xml @@ -18,9 +18,8 @@ - - + @@ -121,107 +120,104 @@ - - - + + - + - + - + - + - - - + + - - - + + - + - + - + - + - + - + - + - + - + - + diff --git a/javascript/examples/editors/diagrams/withdrawal.xml b/javascript/examples/editors/diagrams/withdrawal.xml index dc5b1f703..42b0bbc95 100644 --- a/javascript/examples/editors/diagrams/withdrawal.xml +++ b/javascript/examples/editors/diagrams/withdrawal.xml @@ -66,7 +66,7 @@ - + @@ -232,7 +232,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -250,7 +250,7 @@ - + @@ -259,7 +259,7 @@ - + @@ -268,7 +268,7 @@ - + @@ -277,7 +277,7 @@ - + diff --git a/javascript/examples/grapheditor/www/js/Actions.js b/javascript/examples/grapheditor/www/js/Actions.js index 5b00502ef..56227a146 100644 --- a/javascript/examples/grapheditor/www/js/Actions.js +++ b/javascript/examples/grapheditor/www/js/Actions.js @@ -60,7 +60,7 @@ Actions.prototype.init = function() })); // Removes openFile if dialog is closed - ui.showDialog(new OpenDialog(this).container, 300, 180, true, true, function() + ui.showDialog(new OpenDialog(this).container, 320, 220, true, true, function() { window.openFile = null; }); @@ -73,7 +73,7 @@ Actions.prototype.init = function() ui.showDialog(new EditFileDialog(ui).container, 620, 420, true, true); })).isEnabled = isGraphEnabled; this.addAction('pageSetup...', function() { ui.showDialog(new PageSetupDialog(ui).container, 320, 120, true, true); }); - this.addAction('print...', function() { ui.showDialog(new PrintDialog(ui).container, 300, 120, true, true); }, null, 'sprite-print', 'Ctrl+P'); + this.addAction('print...', function() { ui.showDialog(new PrintDialog(ui).container, 300, 140, true, true); }, null, 'sprite-print', 'Ctrl+P'); this.addAction('preview', function() { mxUtils.show(graph, null, 10, 10); }); // Edit actions @@ -430,7 +430,7 @@ Actions.prototype.init = function() graph.getModel().endUpdate(); } } - }); + }, null, null, 'Ctrl+Shift+Z'); this.addAction('formattedText', function() { var state = graph.getView().getState(graph.getSelectionCell()); @@ -645,6 +645,14 @@ Actions.prototype.init = function() // Removes background page graph.refresh(); + // Workaround for possible handle offset + if (hasScrollbars) + { + var cells = graph.getSelectionCells(); + graph.clearSelection(); + graph.setSelectionCells(cells); + } + // Calls updatePageBreaks graph.sizeDidChange(); @@ -720,9 +728,9 @@ Actions.prototype.init = function() }); }); - toggleFontStyle('bold', mxConstants.FONT_BOLD, function() { document.execCommand('bold'); }); - toggleFontStyle('italic', mxConstants.FONT_ITALIC, function() { document.execCommand('italic'); }); - toggleFontStyle('underline', mxConstants.FONT_UNDERLINE, function() { document.execCommand('underline'); }); + toggleFontStyle('bold', mxConstants.FONT_BOLD, function() { document.execCommand('bold', false, null); }); + toggleFontStyle('italic', mxConstants.FONT_ITALIC, function() { document.execCommand('italic', false, null); }); + toggleFontStyle('underline', mxConstants.FONT_UNDERLINE, function() { document.execCommand('underline', false, null); }); // Color actions this.addAction('fontColor...', function() { ui.menus.pickColor(mxConstants.STYLE_FONTCOLOR, 'forecolor', '000000'); }); @@ -1002,41 +1010,7 @@ Actions.prototype.init = function() if (graph.cellEditor.isContentEditing()) { graph.cellEditor.restoreSelection(selectionState); - - // To find the new image, we create a list of all existing links first - if (newValue != null) - { - var tmp = graph.cellEditor.text2.getElementsByTagName('img'); - var oldImages = []; - - for (var i = 0; i < tmp.length; i++) - { - oldImages.push(tmp[i]); - } - - document.execCommand('insertimage', false, newValue); - - // Sets size of new image - var newImages = graph.cellEditor.text2.getElementsByTagName('img'); - - if (newImages.length == oldImages.length + 1) - { - // Inverse order in favor of appended images - for (var i = newImages.length - 1; i >= 0; i--) - { - if (i == 0 || newImages[i] != oldImages[i - 1]) - { - ui.loadImage(newValue, function(img) - { - newImages[i].style.width = img.width + 'px'; - newImages[i].style.height = img.height + 'px'; - }); - - break; - } - } - } - } + graph.insertImage(newValue, w, h); } else { @@ -1125,6 +1099,7 @@ Actions.prototype.init = function() ui.formatWidth = (ui.formatWidth > 0) ? 0 : 240; ui.formatContainer.style.display = (ui.formatWidth > 0) ? '' : 'none'; ui.refresh(); + ui.format.refresh(); ui.fireEvent(new mxEventObject('formatWidthChanged')); }), null, null, 'Ctrl+Shift+P'); action.setToggleAction(true); diff --git a/javascript/examples/grapheditor/www/js/Dialogs.js b/javascript/examples/grapheditor/www/js/Dialogs.js index ff5b31027..4328a2557 100644 --- a/javascript/examples/grapheditor/www/js/Dialogs.js +++ b/javascript/examples/grapheditor/www/js/Dialogs.js @@ -37,7 +37,7 @@ function Dialog(editorUi, elt, w, h, modal, closable, onClose) this.bg.style.top = '0px'; this.bg.style.bottom = '0px'; this.bg.style.right = '0px'; - this.bg.style.zIndex = this.zIndex; + this.bg.style.zIndex = this.zIndex - 2; mxUtils.setOpacity(this.bg, this.bgOpacity); @@ -137,8 +137,8 @@ var OpenDialog = function() // Adds padding as a workaround for box model in older IE versions var dx = (mxClient.IS_VML && (document.documentMode == null || document.documentMode < 8)) ? 20 : 0; - iframe.setAttribute('width', (360 + dx) + 'px'); - iframe.setAttribute('height', (230 + dx) + 'px'); + iframe.setAttribute('width', (320 + dx) + 'px'); + iframe.setAttribute('height', (220 + dx) + 'px'); iframe.setAttribute('src', OPEN_FORM); this.container = iframe; @@ -681,17 +681,41 @@ var PrintDialog = function(editorUi) pageCountInput.setAttribute('disabled', 'disabled'); } }); + + row = document.createElement('tr'); + td = document.createElement('td'); + mxUtils.write(td, mxResources.get('pageScale') + ':'); + td.style.paddingLeft = '20px'; + row.appendChild(td); + + td = document.createElement('td'); + var pageScaleInput = document.createElement('input'); + pageScaleInput.setAttribute('value', '100 %'); + pageScaleInput.setAttribute('size', '5'); + pageScaleInput.style.width = '50px'; + + td.appendChild(pageScaleInput); + row.appendChild(td); + tbody.appendChild(row); row = document.createElement('tr'); td = document.createElement('td'); td.colSpan = 2; - td.style.paddingTop = '40px'; + td.style.paddingTop = '32px'; td.setAttribute('align', 'right'); + // Overall scale for print-out to account for print borders in dialogs etc function preview(print) { - var pf = graph.pageFormat || mxConstants.PAGE_FORMAT_A4_PORTRAIT; + var printScale = parseInt(pageScaleInput.value) / 100; + if (isNaN(printScale)) + { + printScale = 1; + pageScaleInput.value = '100 %'; + } + + var pf = graph.pageFormat || mxConstants.PAGE_FORMAT_A4_PORTRAIT; var scale = 1 / graph.pageScale; if (pageCountCheckBox.checked) @@ -725,6 +749,7 @@ var PrintDialog = function(editorUi) var pw = pf.width * ps; var ph = pf.height * ps; + // FIXME: Offset for page layout with x/y != 0 x0 = (x > 0) ? x : pf.width * -Math.floor(Math.min(0, x) / pw) + Math.min(0, x) / graph.pageScale; y0 = (y > 0) ? y : pf.height * -Math.floor(Math.min(0, y) / ph) + Math.min(0, y) / graph.pageScale; } @@ -735,6 +760,21 @@ var PrintDialog = function(editorUi) } } + // Applies print scale + pf = mxRectangle.fromRectangle(pf); + pf.width = Math.round(pf.width * printScale); + pf.height = Math.round(pf.height * printScale); + scale *= printScale; + + // Starts at first visible page + if (graph.pageVisible) + { + var layout = graph.getPageLayout(); + + x0 -= Math.max(layout.x, 0) * pf.width; + y0 -= Math.max(layout.y, 0) * pf.height; + } + return PrintDialog.showPreview(PrintDialog.createPrintPreview(graph, scale, pf, border, x0, y0, autoOrigin, print), print); }; @@ -773,7 +813,6 @@ var PrintDialog = function(editorUi) row.appendChild(td); tbody.appendChild(row); - tbody.appendChild(row); table.appendChild(tbody); this.container = table; }; @@ -785,7 +824,7 @@ PrintDialog.showPreview = function(preview, print) { var result = preview.open(); - if (print) + if (print && result != null) { result.print(); } @@ -840,7 +879,7 @@ var FilenameDialog = function(editorUi, filename, buttonText, fn, label, validat } else { - document.execCommand('selectAll'); + document.execCommand('selectAll', false, null); } }; @@ -879,7 +918,7 @@ var FilenameDialog = function(editorUi, filename, buttonText, fn, label, validat }); genericBtn.className = 'geBtn gePrimaryBtn'; - mxEvent.addListener(nameInput, 'keyup', function(e) + mxEvent.addListener(nameInput, 'keypress', function(e) { if (e.keyCode == 13) { @@ -927,6 +966,7 @@ var TextareaDialog = function(editorUi, title, url, fn, cancelFn, cancelTitle) var nameInput = document.createElement('textarea'); mxUtils.write(nameInput, url || ''); + nameInput.style.resize = 'none'; nameInput.style.width = '300px'; nameInput.style.height = '120px'; @@ -995,6 +1035,7 @@ var EditFileDialog = function(editorUi) var div = document.createElement('div'); div.style.textAlign = 'right'; var textarea = document.createElement('textarea'); + textarea.style.resize = 'none'; textarea.style.width = '600px'; textarea.style.height = '370px'; textarea.style.marginBottom = '16px'; @@ -1848,7 +1889,7 @@ var LinkDialog = function(editorUi, initialValue, btnLabel, fn) } else { - document.execCommand('selectAll'); + document.execCommand('selectAll', false, null); } }; @@ -1856,7 +1897,7 @@ var LinkDialog = function(editorUi, initialValue, btnLabel, fn) btns.style.marginTop = '18px'; btns.style.textAlign = 'right'; - mxEvent.addListener(linkInput, 'keyup', function(e) + mxEvent.addListener(linkInput, 'keypress', function(e) { if (e.keyCode == 13) { diff --git a/javascript/examples/grapheditor/www/js/Editor.js b/javascript/examples/grapheditor/www/js/Editor.js index 5ece3dca5..3d03ed45c 100644 --- a/javascript/examples/grapheditor/www/js/Editor.js +++ b/javascript/examples/grapheditor/www/js/Editor.js @@ -286,7 +286,7 @@ Editor.prototype.setGraphXml = function(node) else { throw { - message: 'Cannot open file', + message: mxResources.get('cannotOpenFile'), toString: function() { return this.message; } }; } diff --git a/javascript/examples/grapheditor/www/js/EditorUi.js b/javascript/examples/grapheditor/www/js/EditorUi.js index 5482d68a9..703bf0293 100644 --- a/javascript/examples/grapheditor/www/js/EditorUi.js +++ b/javascript/examples/grapheditor/www/js/EditorUi.js @@ -200,7 +200,6 @@ EditorUi = function(editor, container) }; // Stores the current style and assigns it to new cells - // LATER: Update after copyStyle (handle defaults) and after menu Format, Style var styles = ['shadow', 'dashed', 'dashPattern']; var connectStyles = ['shape', 'edgeStyle', 'curved', 'rounded', 'elbow']; @@ -734,7 +733,7 @@ EditorUi.prototype.initClipboard = function() { if (graph.cellEditor.isContentEditing()) { - document.execCommand('cut'); + document.execCommand('cut', false, null); } else { @@ -749,7 +748,7 @@ EditorUi.prototype.initClipboard = function() { if (graph.cellEditor.isContentEditing()) { - document.execCommand('copy'); + document.execCommand('copy', false, null); } else { @@ -764,7 +763,7 @@ EditorUi.prototype.initClipboard = function() { if (graph.cellEditor.isContentEditing()) { - document.execCommand('paste'); + document.execCommand('paste', false, null); } else { @@ -1139,7 +1138,7 @@ EditorUi.prototype.redo = function() { if (this.editor.graph.cellEditor.isContentEditing()) { - document.execCommand('redo'); + document.execCommand('redo', false, null); } else { @@ -1157,7 +1156,7 @@ EditorUi.prototype.undo = function() { // Stops editing if undo doesn't change anything in the editing value var value = this.editor.graph.cellEditor.getCurrentValue(); - document.execCommand('undo'); + document.execCommand('undo', false, null); if (value == this.editor.graph.cellEditor.getCurrentValue()) { @@ -1470,7 +1469,7 @@ EditorUi.prototype.updateActionStates = function() this.menus.get('line').setEnabled(edgeSelected); this.menus.get('linestart').setEnabled(edgeSelected); this.menus.get('lineend').setEnabled(edgeSelected); - this.menus.get('linewidth').setEnabled(edgeSelected); + this.menus.get('linewidth').setEnabled(!graph.isSelectionEmpty()); this.menus.get('direction').setEnabled(vertexSelected || (edgeSelected && state != null && graph.isLoop(state))); this.actions.get('home').setEnabled(graph.view.currentRoot != null); this.actions.get('exitGroup').setEnabled(graph.view.currentRoot != null); @@ -1615,7 +1614,7 @@ EditorUi.prototype.createDivs = function() this.footerContainer.style.left = '0px'; this.footerContainer.style.right = '0px'; this.footerContainer.style.bottom = '0px'; - this.footerContainer.style.zIndex = mxPopupMenu.prototype.zIndex; + this.footerContainer.style.zIndex = mxPopupMenu.prototype.zIndex - 2; this.hsplit.style.width = this.splitSize + 'px'; // Only vertical scrollbars, no background in format sidebar @@ -1928,7 +1927,7 @@ EditorUi.prototype.openFile = function() })); // Removes openFile if dialog is closed - this.showDialog(new OpenDialog(this).container, 360, 220, true, true, function() + this.showDialog(new OpenDialog(this).container, 320, 220, true, true, function() { window.openFile = null; }); @@ -1986,19 +1985,32 @@ EditorUi.prototype.extractGraphModelFromEvent = function(evt) if (provider != null) { - if (mxUtils.indexOf(provider.types, 'text/html') >= 0) - { - data = this.extractGraphModelFromHtml(this.editor.graph.zapGremlins( - mxUtils.trim(provider.getData('text/html')))); - } - else if (mxUtils.indexOf(provider.types, 'text/plain') >= 0) - { - data = this.editor.graph.zapGremlins(mxUtils.trim(provider.getData('text/plain'))); - } - else if (document.documentMode == 11) - { - data = this.editor.graph.zapGremlins(mxUtils.trim(provider.getData('Text'))); - } + if (document.documentMode == 11) + { + data = provider.getData('Text'); + } + else + { + data = (mxUtils.indexOf(provider.types, 'text/html') >= 0) ? provider.getData('text/html') : null; + + if (mxUtils.indexOf(provider.types, 'text/plain' && (data == null || data.length == 0))) + { + data = provider.getData('text/plain'); + } + } + + if (data != null) + { + data = this.editor.graph.zapGremlins(mxUtils.trim(data)); + + // Tries parsing as HTML document with embedded XML + var xml = this.extractGraphModelFromHtml(data); + + if (xml != null) + { + data = xml; + } + } } } @@ -2344,6 +2356,7 @@ EditorUi.prototype.createKeyHandler = function(editor) keyHandler.bindAction(68, true, 'duplicate'); // Ctrl+D keyHandler.bindAction(68, true, 'setAsDefaultStyle', true); // Ctrl+Shift+D keyHandler.bindAction(90, true, 'undo'); // Ctrl+Z + keyHandler.bindAction(90, true, 'autosize', true); // Ctrl+Shift+Z keyHandler.bindAction(89, true, 'redo'); // Ctrl+Y keyHandler.bindAction(88, true, 'cut'); // Ctrl+X keyHandler.bindAction(67, true, 'copy'); // Ctrl+C diff --git a/javascript/examples/grapheditor/www/js/Format.js b/javascript/examples/grapheditor/www/js/Format.js index c37c4ce33..135feee21 100644 --- a/javascript/examples/grapheditor/www/js/Format.js +++ b/javascript/examples/grapheditor/www/js/Format.js @@ -277,6 +277,12 @@ Format.prototype.clear = function() */ Format.prototype.refresh = function() { + // Performance tweak: No refresh needed if not visible + if (this.container.style.width == '0px') + { + return; + } + this.clear(); var ui = this.editorUi; var graph = ui.editor.graph; @@ -302,6 +308,28 @@ Format.prototype.refresh = function() if (graph.isSelectionEmpty()) { mxUtils.write(label, mxResources.get('diagram')); + + // Adds button to hide the format panel since + // people don't seem to find the toolbar button + // and the menu item in the format menu + var img = document.createElement('img'); + img.setAttribute('border', '0'); + img.setAttribute('src', IMAGE_PATH + '/close.png'); + img.setAttribute('title', mxResources.get('hide')); + img.style.cssFloat = 'right'; + img.style.cursor = 'pointer'; + img.style.marginTop = '1px'; + img.style.marginRight = '16px'; + img.style.border = '1px solid transparent'; + img.style.padding = '1px'; + img.style.opacity = 0.5; + label.appendChild(img) + + mxEvent.addListener(img, 'click', function() + { + ui.actions.get('formatPanel').funct(); + }); + div.appendChild(label); this.panels.push(new DiagramFormatPanel(this, ui, div)); } @@ -319,7 +347,7 @@ Format.prototype.refresh = function() var addClickHandler = mxUtils.bind(this, function(elt, panel, index) { - mxEvent.addListener(elt, 'click', mxUtils.bind(this, function(evt) + var clickHandler = mxUtils.bind(this, function(evt) { if (currentLabel != elt) { @@ -353,11 +381,14 @@ Format.prototype.refresh = function() currentPanel.style.display = ''; } } - })); + }); + + mxEvent.addListener(elt, 'click', clickHandler); if (index == ((containsLabel) ? this.labelIndex : this.currentIndex)) { - elt.click(); + // Invokes handler directly as a workaround for no click on DIV in KHTML. + clickHandler(); } }); @@ -612,11 +643,16 @@ BaseFormatPanel.prototype.createStepper = function(input, update, step, height, mxEvent.addListener(down, 'click', function(evt) { - input.value = (parseInt(input.value) - step); + var val = parseInt(input.value); - if (update != null) + if (!isNaN(val)) { - update(evt); + input.value = val - step; + + if (update != null) + { + update(evt); + } } mxEvent.consume(evt); @@ -624,30 +660,59 @@ BaseFormatPanel.prototype.createStepper = function(input, update, step, height, mxEvent.addListener(up, 'click', function(evt) { - input.value = (parseInt(input.value) + step); + var val = parseInt(input.value); - if (update != null) + if (!isNaN(val)) { - update(evt); + input.value = val + step; + + if (update != null) + { + update(evt); + } } mxEvent.consume(evt); }); - // Disables transfer of focus to DIV but also active state + // Disables transfer of focus to DIV but also :active CSS // so it's only used for fontSize where the focus should // stay on the selected text, but not for any other input. if (disableFocus) { - mxEvent.addListener(down, 'mousedown', function(evt) - { - mxEvent.consume(evt); - }); + var currentSelection = null; - mxEvent.addListener(up, 'mousedown', function(evt) - { - mxEvent.consume(evt); - }); + mxEvent.addGestureListeners(stepper, + function(evt) + { + // Workaround for lost current selection in page because of focus in IE + if (mxClient.IS_QUIRKS || document.documentMode == 8) + { + currentSelection = document.selection.createRange(); + } + + mxEvent.consume(evt); + }, + null, + function(evt) + { + // Workaround for lost current selection in page because of focus in IE + if (currentSelection != null) + { + try + { + currentSelection.select(); + } + catch (e) + { + // ignore + } + + currentSelection = null; + mxEvent.consume(evt); + } + } + ); } return stepper; @@ -714,7 +779,9 @@ BaseFormatPanel.prototype.createOption = function(label, isCheckedFn, setChecked mxEvent.addListener(div, 'click', function(evt) { // Toggles checkbox state for click on label - if (mxEvent.getSource(evt) != cb) + var source = mxEvent.getSource(evt); + + if (source == div || source == span) { cb.checked = !cb.checked; } @@ -942,7 +1009,13 @@ BaseFormatPanel.prototype.createCellColorOption = function(label, colorKey, defa { this.listener = function() { - apply(mxUtils.getValue(graph.view.getState(graph.getSelectionCell()).style, colorKey, null)); + // Seems to be null sometimes, not sure why... + var state = graph.view.getState(graph.getSelectionCell()); + + if (state != null) + { + apply(mxUtils.getValue(state.style, colorKey, null)); + } }; graph.getModel().addListener(mxEvent.CHANGE, this.listener); @@ -1059,7 +1132,7 @@ BaseFormatPanel.prototype.createRelativeOption = function(label, key) mxEvent.consume(evt); }; - var input = this.addUnitInput(div, '%', 20, 40, update, 10, -15); + var input = this.addUnitInput(div, '%', 20, 44, update, 10, -15); var listener = mxUtils.bind(this, function(sender, evt, force) { @@ -1493,7 +1566,7 @@ ArrangePanel.prototype.addGeometry = function(container) var span = document.createElement('div'); span.style.position = 'absolute'; - span.style.width = '70px'; + span.style.width = '50px'; span.style.marginTop = '0px'; span.style.fontWeight = 'bold'; mxUtils.write(span, mxResources.get('size')); @@ -1508,8 +1581,33 @@ ArrangePanel.prototype.addGeometry = function(container) { heightUpdate.apply(this, arguments); }); + + var autosizeBtn = document.createElement('div'); + autosizeBtn.className = 'geSprite geSprite-actualsize'; + autosizeBtn.setAttribute('title', mxResources.get('autosize') + ' (Ctrl+Shift+Z)'); + autosizeBtn.style.position = 'relative'; + autosizeBtn.style.cursor = 'pointer'; + autosizeBtn.style.marginTop = '-3px'; + autosizeBtn.style.border = '0px'; + autosizeBtn.style.left = '52px'; + mxUtils.setOpacity(autosizeBtn, 50); + + mxEvent.addListener(autosizeBtn, 'mouseenter', function() + { + mxUtils.setOpacity(autosizeBtn, 100); + }); + + mxEvent.addListener(autosizeBtn, 'mouseleave', function() + { + mxUtils.setOpacity(autosizeBtn, 50); + }); - mxUtils.br(div); + mxEvent.addListener(autosizeBtn, 'click', function() + { + ui.actions.get('autosize').funct(); + }); + + div.appendChild(autosizeBtn); this.addLabel(div, mxResources.get('width'), 84); this.addLabel(div, mxResources.get('height'), 20); mxUtils.br(div); @@ -1801,6 +1899,12 @@ TextFormatPanel.prototype.addFont = function(container) var stylePanel2 = stylePanel.cloneNode(false); stylePanel2.style.marginLeft = '-3px'; var fontStyleItems = this.editorUi.toolbar.addItems(['bold', 'italic', 'underline'], stylePanel2, true); + + if (mxClient.IS_QUIRKS) + { + mxUtils.br(container); + } + container.appendChild(stylePanel2); this.styleButtons(fontStyleItems); @@ -1813,19 +1917,19 @@ TextFormatPanel.prototype.addFont = function(container) (graph.cellEditor.isContentEditing()) ? function() { - document.execCommand('justifyleft'); + document.execCommand('justifyleft', false, null); } : this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_LEFT]), stylePanel3); var center = this.editorUi.toolbar.addButton('geSprite-center', mxResources.get('center'), (graph.cellEditor.isContentEditing()) ? function() { - document.execCommand('justifycenter'); + document.execCommand('justifycenter', false, null); } : this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_CENTER]), stylePanel3); var right = this.editorUi.toolbar.addButton('geSprite-right', mxResources.get('right'), (graph.cellEditor.isContentEditing()) ? function() { - document.execCommand('justifyright'); + document.execCommand('justifyright', false, null); } : this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_RIGHT]), stylePanel3); this.styleButtons([left, center, right]); @@ -1835,7 +1939,7 @@ TextFormatPanel.prototype.addFont = function(container) var clear = this.editorUi.toolbar.addButton('geSprite-removeformat', mxResources.get('removeFormat'), function() { - document.execCommand('removeformat'); + document.execCommand('removeformat', false, null); }, stylePanel2); this.styleButtons([clear]); } @@ -1848,6 +1952,12 @@ TextFormatPanel.prototype.addFont = function(container) this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_BOTTOM]), stylePanel3); this.styleButtons([top, middle, bottom]); + + if (mxClient.IS_QUIRKS) + { + mxUtils.br(container); + } + container.appendChild(stylePanel3); // Hack for updating UI state below based on current text selection @@ -1863,17 +1973,17 @@ TextFormatPanel.prototype.addFont = function(container) full = this.editorUi.toolbar.addButton('geSprite-justifyfull', null, function() { - document.execCommand('justifyfull'); + document.execCommand('justifyfull', false, null); }, stylePanel3); this.styleButtons([full, sup = this.editorUi.toolbar.addButton('geSprite-superscript', mxResources.get('superscript'), function() { - document.execCommand('superscript'); + document.execCommand('superscript', false, null); }, stylePanel3), sub = this.editorUi.toolbar.addButton('geSprite-subscript', mxResources.get('subscript'), function() { - document.execCommand('subscript'); + document.execCommand('subscript', false, null); }, stylePanel3)]); full.style.marginRight = '9px'; @@ -1882,22 +1992,22 @@ TextFormatPanel.prototype.addFont = function(container) var btns = [this.editorUi.toolbar.addButton('geSprite-orderedlist', mxResources.get('numberelist'), function() { - document.execCommand('insertorderedlist'); + document.execCommand('insertorderedlist', false, null); }, tmp), this.editorUi.toolbar.addButton('geSprite-unorderedlist', mxResources.get('bulletedlist'), function() { - document.execCommand('insertunorderedlist'); + document.execCommand('insertunorderedlist', false, null); }, tmp), this.editorUi.toolbar.addButton('geSprite-outdent', mxResources.get('decreaseIndent'), function() { - document.execCommand('outdent'); + document.execCommand('outdent', false, null); }, tmp), this.editorUi.toolbar.addButton('geSprite-indent', mxResources.get('increaseIndent'), function() { - document.execCommand('indent'); + document.execCommand('indent', false, null); }, tmp), this.editorUi.toolbar.addButton('geSprite-code', mxResources.get('html'), function() @@ -1906,6 +2016,13 @@ TextFormatPanel.prototype.addFont = function(container) }, tmp)]; this.styleButtons(btns); btns[btns.length - 1].style.marginLeft = '9px'; + + if (mxClient.IS_QUIRKS) + { + mxUtils.br(container); + tmp.style.height = '40'; + } + container.appendChild(tmp); } else @@ -1975,19 +2092,24 @@ TextFormatPanel.prototype.addFont = function(container) // Font size var input = document.createElement('input'); - input.style.position = 'absolute'; input.style.textAlign = 'right'; input.style.marginTop = '4px'; - input.style.right = '32px'; + + if (!mxClient.IS_QUIRKS) + { + input.style.position = 'absolute'; + input.style.right = '32px'; + } + input.style.width = '47px'; - input.style.height = '17px'; + input.style.height = (mxClient.IS_QUIRKS) ? '21px' : '17px'; stylePanel2.appendChild(input); var inputUpdate = this.installInputHandler(input, mxConstants.STYLE_FONTSIZE, Menus.prototype.defaultFontSize, 1, 999, ' pt', function(fontsize) { - // Creates an element with arbitrary size 3 - document.execCommand('fontSize', false, '3'); + // Creates an element with arbitrary size 7 + document.execCommand('fontSize', false, '7'); // Changes the css font size of the first font element inside the in-place editor with size 3 // hopefully the above element that we've just created. LATER: Check for new element using @@ -1996,7 +2118,7 @@ TextFormatPanel.prototype.addFont = function(container) for (var i = 0; i < elts.length; i++) { - if (elts[i].getAttribute('size') == '3') + if (elts[i].getAttribute('size') == '7') { elts[i].removeAttribute('size'); elts[i].style.fontSize = fontsize + 'px'; @@ -2009,7 +2131,12 @@ TextFormatPanel.prototype.addFont = function(container) var stepper = this.createStepper(input, inputUpdate, 1, 10, true); stepper.style.display = input.style.display; stepper.style.marginTop = '4px'; - stepper.style.right = '20px'; + + if (!mxClient.IS_QUIRKS) + { + stepper.style.right = '20px'; + } + stylePanel2.appendChild(stepper); var arrow = fontMenu.getElementsByTagName('div')[0]; @@ -2162,7 +2289,7 @@ TextFormatPanel.prototype.addFont = function(container) this.editorUi.toolbar.addButton('geSprite-horizontalrule', mxResources.get('insertHorizontalRule'), function() { - document.execCommand('inserthorizontalrule'); + document.execCommand('inserthorizontalrule', false, null); }, insertPanel), this.editorUi.toolbar.addMenuFunctionInContainer(insertPanel, 'geSprite-table', mxResources.get('table'), false, mxUtils.bind(this, function(menu) { @@ -2178,6 +2305,11 @@ TextFormatPanel.prototype.addFont = function(container) wrapper2.appendChild(insertPanel); container.appendChild(wrapper2); + if (mxClient.IS_QUIRKS) + { + wrapper2.style.height = '70'; + } + var tablePanel = stylePanel.cloneNode(false); tablePanel.style.paddingLeft = '0px'; @@ -2239,6 +2371,12 @@ TextFormatPanel.prototype.addFont = function(container) wrapper3.appendChild(this.createTitle(mxResources.get('table'))); wrapper3.appendChild(tablePanel); + if (mxClient.IS_QUIRKS) + { + mxUtils.br(container); + wrapper3.style.height = '70'; + } + var tablePanel2 = stylePanel.cloneNode(false); tablePanel2.style.paddingLeft = '0px'; @@ -2343,6 +2481,13 @@ TextFormatPanel.prototype.addFont = function(container) }, tablePanel2)]; this.styleButtons(btns); btns[2].style.marginRight = '9px'; + + if (mxClient.IS_QUIRKS) + { + mxUtils.br(wrapper3); + mxUtils.br(wrapper3); + } + wrapper3.appendChild(tablePanel2); container.appendChild(wrapper3); @@ -2544,20 +2689,25 @@ TextFormatPanel.prototype.addFont = function(container) bgColorApply(currentBgColor); } - // Strips leading and trailing quotes - var ff = css.fontFamily; - - if (ff.charAt(0) == '\'') + // Workaround for firstChild is null or not an object + // in the log which seems to be IE8- only / 29.01.15 + if (fontMenu.firstChild != null) { - ff = ff.substring(1); + // Strips leading and trailing quotes + var ff = css.fontFamily; + + if (ff.charAt(0) == '\'') + { + ff = ff.substring(1); + } + + if (ff.charAt(ff.length - 1) == '\'') + { + ff = ff.substring(0, ff.length - 1); + } + + fontMenu.firstChild.nodeValue = ff; } - - if (ff.charAt(ff.length - 1) == '\'') - { - ff = ff.substring(0, ff.length - 1); - } - - fontMenu.firstChild.nodeValue = ff; } updating = false; @@ -2599,36 +2749,72 @@ StyleFormatPanel.prototype.init = function() var editor = ui.editor; var graph = editor.graph; var ss = this.format.getSelectionState(); - + if (!ss.containsImage || ss.style.shape == 'image') { this.container.appendChild(this.addFill(this.createPanel())); } this.container.appendChild(this.addStroke(this.createPanel())); - - if (ss.image) + var opacityPanel = this.createRelativeOption(mxResources.get('opacity'), mxConstants.STYLE_OPACITY); + opacityPanel.style.paddingTop = '10px'; + opacityPanel.style.paddingBottom = '10px'; + this.container.appendChild(opacityPanel); + this.container.appendChild(this.addEffects(this.createPanel())); + var opsPanel = this.addEditOps(this.createPanel()); + + if (opsPanel.firstChild != null) { - this.container.appendChild(this.addImageOps(this.createPanel())); + mxUtils.br(opsPanel); } - this.container.appendChild(this.createRelativeOption(mxResources.get('opacity'), mxConstants.STYLE_OPACITY)); - this.container.appendChild(this.addEffects(this.createPanel())); - this.container.appendChild(this.addStyleOps(this.createPanel())); + this.container.appendChild(this.addStyleOps(opsPanel)); }; /** * Adds the label menu items to the given menu and parent. */ -StyleFormatPanel.prototype.addImageOps = function(div) +StyleFormatPanel.prototype.addEditOps = function(div) { - var btn = mxUtils.button(mxResources.get('editImage'), mxUtils.bind(this, function(evt) - { - this.editorUi.actions.get('image').funct(); - })); + var ss = this.format.getSelectionState(); + var btn = null; - btn.style.width = '202px'; - div.appendChild(btn); + if (this.editorUi.editor.graph.getSelectionCount() == 1) + { + btn = mxUtils.button(mxResources.get('editStyle'), mxUtils.bind(this, function(evt) + { + this.editorUi.actions.get('editStyle').funct(); + })); + + btn.setAttribute('title', 'Ctrl+E'); + btn.style.width = '202px'; + btn.style.marginBottom = '2px'; + + div.appendChild(btn); + } + + if (ss.image) + { + var btn2 = mxUtils.button(mxResources.get('editImage'), mxUtils.bind(this, function(evt) + { + this.editorUi.actions.get('image').funct(); + })); + + btn2.style.marginBottom = '2px'; + + if (btn == null) + { + btn2.style.width = '202px'; + } + else + { + btn.style.width = '100px'; + btn2.style.width = '100px'; + btn2.style.marginLeft = '2px'; + } + + div.appendChild(btn2); + } return div; }; @@ -2683,7 +2869,9 @@ StyleFormatPanel.prototype.addFill = function(container) }); fillPanel.style.fontWeight = 'bold'; - gradientPanel.style.display = (ss.fill && ss.style.shape != 'image') ? '' : 'none'; + var tmpColor = mxUtils.getValue(ss.style, fillKey, null); + gradientPanel.style.display = (tmpColor != null && tmpColor != mxConstants.NONE && + ss.fill && ss.style.shape != 'image') ? '' : 'none'; var directions = [mxConstants.DIRECTION_NORTH, mxConstants.DIRECTION_EAST, mxConstants.DIRECTION_SOUTH, mxConstants.DIRECTION_WEST]; @@ -2744,7 +2932,7 @@ StyleFormatPanel.prototype.addStroke = function(container) var ss = this.format.getSelectionState(); container.style.paddingTop = '8px'; - container.style.paddingBottom = '8px'; + container.style.paddingBottom = '6px'; container.style.whiteSpace = 'normal'; var colorPanel = document.createElement('div'); @@ -2816,16 +3004,36 @@ StyleFormatPanel.prototype.addStroke = function(container) stylePanel.style.marginTop = '2px'; stylePanel.className = 'geToolbarContainer'; + var pattern = this.editorUi.toolbar.addMenuFunctionInContainer(stylePanel, 'geSprite-orthogonal', mxResources.get('line'), false, mxUtils.bind(this, function(menu) + { + var addItem = mxUtils.bind(this, function(cssName, keys, values) + { + var item = this.editorUi.menus.styleChange(menu, '', keys, values, 'geIcon', null); + + var pat = document.createElement('div'); + pat.style.width = '70px'; + pat.style.height = '1px'; + pat.style.borderBottom = '1px ' + cssName + ' black'; + pat.style.paddingTop = '6px'; + + item.firstChild.firstChild.style.padding = '0px 4px 0px 4px'; + item.firstChild.firstChild.style.width = '70px'; + item.firstChild.firstChild.appendChild(pat); + }); + + addItem('solid', [mxConstants.STYLE_DASHED, mxConstants.STYLE_DASH_PATTERN], [null, null]); + addItem('dashed', [mxConstants.STYLE_DASHED, mxConstants.STYLE_DASH_PATTERN], ['1', null]); + addItem('dotted', [mxConstants.STYLE_DASHED, mxConstants.STYLE_DASH_PATTERN], ['1', '1 4']); + })); + var stylePanel2 = stylePanel.cloneNode(false); // Stroke width var input = document.createElement('input'); - input.style.position = 'absolute'; input.style.textAlign = 'right'; input.style.marginTop = '2px'; - input.style.right = '32px'; input.style.width = '41px'; - input.style.height = '15px'; + stylePanel.appendChild(input); var strokeKey = (ss.style.shape == 'image') ? mxConstants.STYLE_IMAGE_BORDER : mxConstants.STYLE_STROKECOLOR; @@ -2854,33 +3062,29 @@ StyleFormatPanel.prototype.addStroke = function(container) var stepper = this.createStepper(input, update, 1, 9); stepper.style.display = input.style.display; stepper.style.marginTop = '2px'; - stepper.style.right = '20px'; stylePanel.appendChild(stepper); + if (!mxClient.IS_QUIRKS) + { + input.style.position = 'absolute'; + input.style.right = '32px'; + stepper.style.right = '20px'; + input.style.height = '15px'; + } + else + { + input.style.height = '17px'; + } + mxEvent.addListener(input, 'blur', update); mxEvent.addListener(input, 'change', update); - - var pattern = this.editorUi.toolbar.addMenuFunctionInContainer(stylePanel, 'geSprite-orthogonal', mxResources.get('line'), false, mxUtils.bind(this, function(menu) - { - var addItem = mxUtils.bind(this, function(cssName, keys, values) - { - var item = this.editorUi.menus.styleChange(menu, '', keys, values, 'geIcon', null); - - var pat = document.createElement('div'); - pat.style.width = '70px'; - pat.style.height = '1px'; - pat.style.borderBottom = '1px ' + cssName + ' black'; - pat.style.paddingTop = '6px'; - - item.firstChild.firstChild.style.padding = '0px 4px 0px 4px'; - item.firstChild.firstChild.style.width = '70px'; - item.firstChild.firstChild.appendChild(pat); - }); - addItem('solid', [mxConstants.STYLE_DASHED, mxConstants.STYLE_DASH_PATTERN], [null, null]); - addItem('dashed', [mxConstants.STYLE_DASHED, mxConstants.STYLE_DASH_PATTERN], ['1', null]); - addItem('dotted', [mxConstants.STYLE_DASHED, mxConstants.STYLE_DASH_PATTERN], ['1', '1 4']); - })); + if (mxClient.IS_QUIRKS) + { + mxUtils.br(stylePanel2); + mxUtils.br(stylePanel2); + } + var edgeStyle = this.editorUi.toolbar.addMenuFunctionInContainer(stylePanel2, 'geSprite-orthogonal', mxResources.get('line'), false, mxUtils.bind(this, function(menu) { this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_SHAPE, mxConstants.STYLE_EDGE, mxConstants.STYLE_CURVED, 'noedgestyle'], [null, null, null, null], 'geIcon geSprite geSprite-straight', null, true).setAttribute('title', mxResources.get('straight')); @@ -3030,10 +3234,22 @@ StyleFormatPanel.prototype.addStroke = function(container) if (ss.edges.length == graph.getSelectionCount()) { container.appendChild(stylePanel2); + + if (mxClient.IS_QUIRKS) + { + mxUtils.br(container); + mxUtils.br(container); + } + container.appendChild(arrowPanel); } else if (ss.vertices.length == graph.getSelectionCount()) { + if (mxClient.IS_QUIRKS) + { + mxUtils.br(container); + } + container.appendChild(perimeterPanel); } @@ -3241,7 +3457,7 @@ StyleFormatPanel.prototype.addEffects = function(div) var graph = editor.graph; var ss = this.format.getSelectionState(); - div.style.paddingTop = '4px'; + div.style.paddingTop = '2px'; div.style.paddingBottom = '4px'; var table = document.createElement('table'); @@ -3256,7 +3472,9 @@ StyleFormatPanel.prototype.addEffects = function(div) table.style.paddingRight = '20px'; var tbody = document.createElement('tbody'); var row = document.createElement('tr'); + row.style.padding = '0px'; var left = document.createElement('td'); + left.style.padding = '0px'; left.style.width = '50%'; left.setAttribute('valign', 'top'); @@ -3313,6 +3531,9 @@ StyleFormatPanel.prototype.addEffects = function(div) */ StyleFormatPanel.prototype.addStyleOps = function(div) { + div.style.paddingTop = '10px'; + div.style.paddingBottom = '10px'; + var btn = mxUtils.button(mxResources.get('setAsDefaultStyle'), mxUtils.bind(this, function(evt) { this.editorUi.actions.get('setAsDefaultStyle').funct(); @@ -3594,42 +3815,6 @@ DiagramFormatPanel.prototype.addDocumentProperties = function(div) bg.appendChild(btn); div.appendChild(bg); - - if (typeof(MathJax) !== 'undefined') - { - var opt = this.createOption(mxResources.get('mathematicalTypesetting'), function() - { - return graph.mathEnabled; - }, function(checked) - { - ui.setMathEnabled(checked); - }, - { - install: function(apply) - { - this.listener = function() - { - apply(graph.mathEnabled); - }; - - ui.addListener('mathEnabledChanged', this.listener); - }, - destroy: function() - { - ui.removeListener(this.listener); - } - }); - div.appendChild(opt); - - // Offline check not needed since math is only available in online mode - var link = document.createElement('a'); - link.setAttribute('href', 'https://support.draw.io/questions/2949135/how-to-use-mathematical-typesetting'); - link.setAttribute('title', mxResources.get('help')); - link.setAttribute('target', '_blank'); - link.style.cssText = 'color:blue;text-decoration:underline;position:absolute;right:20px;'; - mxUtils.write(link, '?'); - opt.appendChild(link); - } return div; }; diff --git a/javascript/examples/grapheditor/www/js/Graph.js b/javascript/examples/grapheditor/www/js/Graph.js index 52645d9fa..ebc6755a6 100644 --- a/javascript/examples/grapheditor/www/js/Graph.js +++ b/javascript/examples/grapheditor/www/js/Graph.js @@ -522,6 +522,29 @@ Graph.prototype.convertValueToString = function(cell) return mxGraph.prototype.convertValueToString.apply(this, arguments); }; +/** + * Overrides autosize to add a border. + */ +Graph.prototype.getPreferredSizeForCell = function(cell) +{ + var result = mxGraph.prototype.getPreferredSizeForCell.apply(this, arguments); + + // Adds buffer + if (result != null) + { + result.width += 10; + result.height += 4; + + if (this.gridEnabled) + { + result.width = this.snap(result.width); + result.height = this.snap(result.height); + } + } + + return result; +} + /** * Removes all illegal control characters with ASCII code <32 except TAB, LF * and CR. @@ -622,33 +645,6 @@ Graph.prototype.getLinkForCell = function(cell) return null; }; -/** - * Overrides double click handling to add the tolerance. - */ -Graph.prototype.dblClick = function(evt, cell) -{ - var pt = mxUtils.convertPoint(this.container, mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - - if (cell == null) - { - cell = this.getCellAt(pt.x, pt.y); - } - - // Automatically adds new child cells to edges on double click - if (evt != null && this.model.isEdge(cell)) - { - var state = this.view.getState(cell); - - if (state != null && (state.text == null || state.text.node == null || (!mxUtils.contains(state.text.boundingBox, pt.x, pt.y) && - !mxUtils.isAncestorNode(state.text.node, mxEvent.getSource(evt))))) - { - cell = this.addEdgeLabelAt(state, pt.x, pt.y); - } - } - - mxGraph.prototype.dblClick.call(this, evt, cell); -}; - /** * Overridden to stop moving edge labels between cells. */ @@ -675,35 +671,80 @@ Graph.prototype.getDropTarget = function(cells, evt, cell, clone) }; /** - * Adds a new edge label at the given position and returns the new cell. + * Overrides double click handling to add the tolerance and inserting text. */ -Graph.prototype.addEdgeLabelAt = function(state, x, y) +Graph.prototype.dblClick = function(evt, cell) +{ + var pt = mxUtils.convertPoint(this.container, mxEvent.getClientX(evt), mxEvent.getClientY(evt)); + + if (cell == null) + { + cell = this.getCellAt(pt.x, pt.y); + } + + // Automatically adds new child cells to edges on double click + if (evt != null && !this.model.isVertex(cell)) + { + var state = (this.model.isEdge(cell)) ? this.view.getState(cell) : null; + + if (state == null || (state.text == null || state.text.node == null || + (!mxUtils.contains(state.text.boundingBox, pt.x, pt.y) && + !mxUtils.isAncestorNode(state.text.node, mxEvent.getSource(evt))))) + { + cell = this.addText(pt.x, pt.y, state); + } + } + + mxGraph.prototype.dblClick.call(this, evt, cell); +}; + +/** + * Adds a new label at the given position and returns the new cell. State is + * an optional edge state to be used as the parent for the label. Vertices + * are not allowed currently as states. + */ +Graph.prototype.addText = function(x, y, state) { // Creates a new edge label with a predefined text var label = new mxCell(); label.value = 'Text'; - label.style = 'text;html=1;resizable=0;align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;' + label.style = 'text;html=1;resizable=0;' label.geometry = new mxGeometry(0, 0, 0, 0); - label.geometry.relative = true; label.connectable = false; label.vertex = true; - // Resets the relative location stored inside the geometry - var pt2 = this.view.getRelativePoint(state, x, y); - label.geometry.x = Math.round(pt2.x * 10000) / 10000; - label.geometry.y = Math.round(pt2.y); + if (state != null) + { + label.style += ';align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;' + label.geometry.relative = true; + + // Resets the relative location stored inside the geometry + var pt2 = this.view.getRelativePoint(state, x, y); + label.geometry.x = Math.round(pt2.x * 10000) / 10000; + label.geometry.y = Math.round(pt2.y); + + // Resets the offset inside the geometry to find the offset from the resulting point + label.geometry.offset = new mxPoint(0, 0); + pt2 = this.view.getPoint(state, label.geometry); - // Resets the offset inside the geometry to find the offset from the resulting point - label.geometry.offset = new mxPoint(0, 0); - pt2 = this.view.getPoint(state, label.geometry); + var scale = this.view.scale; + label.geometry.offset = new mxPoint(Math.round((x - pt2.x) / scale), Math.round((y - pt2.y) / scale)); + } + else + { + label.style += 'autosize=1;align=left;verticalAlign=top;spacingTop=-4;' - var scale = this.view.scale; - label.geometry.offset = new mxPoint(Math.round((x - pt2.x) / scale), Math.round((y - pt2.y) / scale)); - + var tr = this.view.translate; + label.geometry.width = '40'; + label.geometry.height = '20'; + label.geometry.x = Math.round(x / this.view.scale) - tr.x; + label.geometry.y = Math.round(y / this.view.scale) - tr.y; + } + this.getModel().beginUpdate(); try { - this.addCells([label], state.cell); + this.addCells([label], (state != null) ? state.cell : null); this.fireEvent(new mxEventObject('cellsInserted', 'cells', [label])); } finally @@ -714,6 +755,60 @@ Graph.prototype.addEdgeLabelAt = function(state, x, y) return label; }; +/** + * Inserts the given image at the cursor in a content editable text box using + * the insertimage command on the document instance and updates the size. + */ +Graph.prototype.insertImage = function(newValue, w, h) +{ + // To find the new image, we create a list of all existing links first + if (newValue != null) + { + var tmp = this.cellEditor.text2.getElementsByTagName('img'); + var oldImages = []; + + for (var i = 0; i < tmp.length; i++) + { + oldImages.push(tmp[i]); + } + + document.execCommand('insertimage', false, newValue); + + // Sets size of new image + var newImages = this.cellEditor.text2.getElementsByTagName('img'); + + if (newImages.length == oldImages.length + 1) + { + // Inverse order in favor of appended images + for (var i = newImages.length - 1; i >= 0; i--) + { + if (i == 0 || newImages[i] != oldImages[i - 1]) + { + newImages[i].style.width = w + 'px'; + newImages[i].style.height = h + 'px'; + + break; + } + } + } + } +}; + +/** + * + * @param cell + * @returns {Boolean} + */ +Graph.prototype.isCellResizable = function(cell) +{ + var result = mxGraph.prototype.isCellResizable.apply(this, arguments); + + var state = this.view.getState(cell); + var style = (state != null) ? state.style : this.getCellStyle(cell); + + return result || style['whiteSpace'] == 'wrap'; +}; + /** * Function: alignCells * @@ -1034,14 +1129,17 @@ Graph.prototype.insertColumn = function(table, index) */ Graph.prototype.deleteColumn = function(table, index) { - var bd = table.tBodies[0]; - var rows = bd.rows; - - for (var i = 0; i < rows.length; i++) + if (index >= 0) { - if (rows[i].cells.length > index) + var bd = table.tBodies[0]; + var rows = bd.rows; + + for (var i = 0; i < rows.length; i++) { - rows[i].deleteCell(index); + if (rows[i].cells.length > index) + { + rows[i].deleteCell(index); + } } } }; @@ -1509,7 +1607,7 @@ Graph.prototype.initTouch = function() if (this.isSelectText() && this.text2.innerHTML.length > 0) { - document.execCommand('selectAll'); + document.execCommand('selectAll', false, null); } // Hides handles on selected cell @@ -1987,7 +2085,7 @@ Graph.prototype.initTouch = function() if (model.isEdge(parent) && geo != null && geo.relative && state.width < 2 && state.height < 2 && state.text != null && state.text.boundingBox != null) { - var bbox = state.text.boundingBox; + var bbox = state.text.unrotatedBoundingBox || state.text.boundingBox; return new mxRectangle(Math.round(bbox.x), Math.round(bbox.y), Math.round(bbox.width), Math.round(bbox.height)); } @@ -2006,11 +2104,22 @@ Graph.prototype.initTouch = function() var parent = model.getParent(this.state.cell); var geo = this.graph.getCellGeometry(this.state.cell); - if (!model.isEdge(parent) || geo == null || !geo.relative || this.state == null || this.state.width >= 2 || this.state.height >= 2) + // Lets rotation events through + var handle = this.getHandleForEvent(me); + + if (handle == mxEvent.ROTATION_HANDLE || !model.isEdge(parent) || geo == null || !geo.relative || + this.state == null || this.state.width >= 2 || this.state.height >= 2) { mxVertexHandlerMouseDown.apply(this, arguments); } }; + + // Shows rotation handle for edge labels. + mxVertexHandler.prototype.isRotationHandleVisible = function() + { + return this.graph.isEnabled() && this.rotationEnabled && this.graph.isCellRotatable(this.state.cell) && + (mxGraphHandler.prototype.maxCells <= 0 || this.graph.getSelectionCount() < mxGraphHandler.prototype.maxCells); + }; // Requires callback to editorUi in edit link so override editorUi.init var editorUiInit3 = EditorUi.prototype.init; diff --git a/javascript/examples/grapheditor/www/js/Menus.js b/javascript/examples/grapheditor/www/js/Menus.js index c176d89e8..7eb56fdda 100644 --- a/javascript/examples/grapheditor/www/js/Menus.js +++ b/javascript/examples/grapheditor/www/js/Menus.js @@ -278,11 +278,11 @@ Menus.prototype.init = function() this.put('alignment', new Menu(mxUtils.bind(this, function(menu, parent) { this.styleChange(menu, mxResources.get('leftAlign'), [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_LEFT], null, parent, - function() { document.execCommand('justifyleft'); }); + function() { document.execCommand('justifyleft', false, null); }); this.styleChange(menu, mxResources.get('center'), [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_CENTER], null, parent, - function() { document.execCommand('justifycenter'); }); + function() { document.execCommand('justifycenter', false, null); }); this.styleChange(menu, mxResources.get('rightAlign'), [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_RIGHT], null, parent, - function() { document.execCommand('justifyright'); }); + function() { document.execCommand('justifyright', false, null); }); menu.addSeparator(parent); this.styleChange(menu, mxResources.get('topAlign'), [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_TOP], null, parent); this.styleChange(menu, mxResources.get('middle'), [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_MIDDLE], null, parent); diff --git a/javascript/examples/grapheditor/www/js/Shapes.js b/javascript/examples/grapheditor/www/js/Shapes.js index 5bfe245f7..7f8e7992a 100644 --- a/javascript/examples/grapheditor/www/js/Shapes.js +++ b/javascript/examples/grapheditor/www/js/Shapes.js @@ -103,21 +103,25 @@ DataStoreShape.prototype.getLabelBounds = function(rect) { var dy = 2.5 * Math.min(rect.height / 2, Math.round(rect.height / 8) + this.strokewidth - 1); - - if (this.direction == null || this.direction == mxConstants.DIRECTION_EAST) + + if ((!this.flipV && (this.direction == null || this.direction == mxConstants.DIRECTION_EAST) || + (this.flipV && this.direction == mxConstants.DIRECTION_WEST))) { rect.y += dy; rect.height -= dy; } - else if (this.direction == mxConstants.DIRECTION_SOUTH) + else if ((!this.flipV && this.direction == mxConstants.DIRECTION_SOUTH) || + ((this.flipV && this.direction == mxConstants.DIRECTION_NORTH))) { rect.width -= dy; } - if (this.direction == mxConstants.DIRECTION_WEST) + else if ((!this.flipV && this.direction == mxConstants.DIRECTION_WEST) || + (this.flipV && (this.direction == null || this.direction == mxConstants.DIRECTION_EAST))) { rect.height -= dy; } - if (this.direction == mxConstants.DIRECTION_NORTH) + else if ((!this.flipV && this.direction == mxConstants.DIRECTION_NORTH) || + (this.flipV && this.direction == mxConstants.DIRECTION_SOUTH)) { rect.x += dy; rect.width -= dy; diff --git a/javascript/examples/grapheditor/www/js/Sidebar.js b/javascript/examples/grapheditor/www/js/Sidebar.js index 7c226d410..cf5c0f5c0 100644 --- a/javascript/examples/grapheditor/www/js/Sidebar.js +++ b/javascript/examples/grapheditor/www/js/Sidebar.js @@ -375,7 +375,7 @@ Sidebar.prototype.addGeneralPalette = function(expand) content.appendChild(this.createVertexTemplate('ellipse;whiteSpace=wrap;html=1;', 80, 80, '', 'Circle', true)); // Explicit strokecolor/fillcolor=none is a workaround to maintain transparent background regardless of current style content.appendChild(this.createVertexTemplate('text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;overflow=hidden;', - 60, 30, 'Text', 'Text', true)); + 40, 20, 'Text', 'Text', true)); content.appendChild(this.createVertexTemplate('shape=ext;double=1;whiteSpace=wrap;html=1;', 120, 60, '', 'Double Rectangle', true)); content.appendChild(this.createVertexTemplate('shape=ext;double=1;rounded=1;whiteSpace=wrap;html=1;', 120, 60, '', 'Double Rounded Rectangle', true)); @@ -1432,8 +1432,8 @@ Sidebar.prototype.dropAndConnect = function(source, targets, direction, dropCell geo2 = graph.getCellGeometry(targets[dropCellIndex]); var dx = geo.x - geo2.x; var dy = geo.y - geo2.y; - geo.x = geo2.x; - geo.y = geo2.y; + geo.x = Math.round(geo2.x); + geo.y = Math.round(geo2.y); graph.model.setGeometry(targets[dropCellIndex], geo); graph.cellsMoved(targets, dx, dy, null, null, true); tmp = targets.slice(); diff --git a/javascript/examples/grapheditor/www/js/Toolbar.js b/javascript/examples/grapheditor/www/js/Toolbar.js index dc0c6e16e..bdbba3cc7 100644 --- a/javascript/examples/grapheditor/www/js/Toolbar.js +++ b/javascript/examples/grapheditor/www/js/Toolbar.js @@ -47,11 +47,11 @@ Toolbar.prototype.init = function() var align = this.addMenuFunction('geSprite-left', mxResources.get('align'), false, mxUtils.bind(this, function(menu) { this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_LEFT], 'geIcon geSprite geSprite-left', null, - function() { document.execCommand('justifyleft'); }).setAttribute('title', mxResources.get('left')); + function() { document.execCommand('justifyleft', false, null); }).setAttribute('title', mxResources.get('left')); this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_CENTER], 'geIcon geSprite geSprite-center', null, - function() { document.execCommand('justifycenter'); }).setAttribute('title', mxResources.get('center')); + function() { document.execCommand('justifycenter', false, null); }).setAttribute('title', mxResources.get('center')); this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_RIGHT], 'geIcon geSprite geSprite-right', null, - function() { document.execCommand('justifyright'); }).setAttribute('title', mxResources.get('right')); + function() { document.execCommand('justifyright', false, null); }).setAttribute('title', mxResources.get('right')); this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_TOP], 'geIcon geSprite geSprite-top', null).setAttribute('title', mxResources.get('top')); this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_MIDDLE], 'geIcon geSprite geSprite-middle', null).setAttribute('title', mxResources.get('middle')); this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_BOTTOM], 'geIcon geSprite geSprite-bottom', null).setAttribute('title', mxResources.get('bottom')); @@ -174,11 +174,11 @@ Toolbar.prototype.createTextToolbar = function() this.addMenuFunction('geSprite-left', mxResources.get('align'), false, mxUtils.bind(this, function(menu) { this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_LEFT], 'geIcon geSprite geSprite-left', null, - function() { document.execCommand('justifyleft'); }).setAttribute('title', mxResources.get('left')); + function() { document.execCommand('justifyleft', false, null); }).setAttribute('title', mxResources.get('left')); this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_CENTER], 'geIcon geSprite geSprite-center', null, - function() { document.execCommand('justifycenter'); }).setAttribute('title', mxResources.get('center')); + function() { document.execCommand('justifycenter', false, null); }).setAttribute('title', mxResources.get('center')); this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_RIGHT], 'geIcon geSprite geSprite-right', null, - function() { document.execCommand('justifyright'); }).setAttribute('title', mxResources.get('right')); + function() { document.execCommand('justifyright', false, null); }).setAttribute('title', mxResources.get('right')); })); this.addMenuFunction('geSprite-fontcolor', mxResources.get('more') + '...', false, mxUtils.bind(this, function(menu) @@ -192,13 +192,13 @@ Toolbar.prototype.createTextToolbar = function() elt = menu.addItem('', null, mxUtils.bind(this, function() { - document.execCommand('superscript'); + document.execCommand('superscript', false, null); }), null, 'geIcon geSprite geSprite-superscript'); elt.setAttribute('title', mxResources.get('superscript')); elt = menu.addItem('', null, mxUtils.bind(this, function() { - document.execCommand('subscript'); + document.execCommand('subscript', false, null); }), null, 'geIcon geSprite geSprite-subscript'); elt.setAttribute('title', mxResources.get('subscript')); })); @@ -207,22 +207,22 @@ Toolbar.prototype.createTextToolbar = function() this.addButton('geIcon geSprite geSprite-orderedlist', mxResources.get('numberedList'), function() { - document.execCommand('insertorderedlist'); + document.execCommand('insertorderedlist', false, null); }); this.addButton('geIcon geSprite geSprite-unorderedlist', mxResources.get('bulletedList'), function() { - document.execCommand('insertunorderedlist'); + document.execCommand('insertunorderedlist', false, null); }); this.addButton('geIcon geSprite geSprite-outdent', mxResources.get('decreaseIndent'), function() { - document.execCommand('outdent'); + document.execCommand('outdent', false, null); }); this.addButton('geIcon geSprite geSprite-indent', mxResources.get('increaseIndent'), function() { - document.execCommand('indent'); + document.execCommand('indent', false, null); }); this.addSeparator(); @@ -230,7 +230,7 @@ Toolbar.prototype.createTextToolbar = function() this.addButton('geIcon geSprite geSprite-horizontalrule', mxResources.get('insertHorizontalRule'), function() { - document.execCommand('inserthorizontalrule'); + document.execCommand('inserthorizontalrule', false, null); }); // KNOWN: All table stuff does not work with undo/redo @@ -381,7 +381,7 @@ Toolbar.prototype.createTextToolbar = function() this.addButton('geIcon geSprite geSprite-removeformat', mxResources.get('removeFormat'), function() { - document.execCommand('removeformat'); + document.execCommand('removeformat', false, null); }); this.addButton('geIcon geSprite geSprite-code', mxResources.get('html'), function() diff --git a/javascript/examples/grapheditor/www/open.html b/javascript/examples/grapheditor/www/open.html index 49087dbf9..3ffbfd4a0 100644 --- a/javascript/examples/grapheditor/www/open.html +++ b/javascript/examples/grapheditor/www/open.html @@ -187,8 +187,7 @@ var supportedText = document.getElementById('openSupported'); supportedText.innerHTML = window.parent.mxResources.get('openSupported'); var form = window.openForm || document.getElementById('openForm'); - - // FIXME: Adds .html in IE + form.setAttribute('action', window.parent.OPEN_URL); } }; @@ -196,7 +195,7 @@
    -

    +
    diff --git a/javascript/examples/grapheditor/www/resources/grapheditor.txt b/javascript/examples/grapheditor/www/resources/grapheditor.txt index 24540672f..9bbfd2d04 100644 --- a/javascript/examples/grapheditor/www/resources/grapheditor.txt +++ b/javascript/examples/grapheditor/www/resources/grapheditor.txt @@ -41,6 +41,7 @@ borderColor=Border color bottom=Bottom bottomAlign=Bottom align bulletedList=Bulleted list +cannotOpenFile=Cannot open file center=Center changeOrientation=Change orientation circle=Circle diff --git a/javascript/examples/grapheditor/www/resources/grapheditor_de.txt b/javascript/examples/grapheditor/www/resources/grapheditor_de.txt index bfb437322..3d08853fc 100644 --- a/javascript/examples/grapheditor/www/resources/grapheditor_de.txt +++ b/javascript/examples/grapheditor/www/resources/grapheditor_de.txt @@ -41,6 +41,7 @@ borderColor=Rahmenfarbe bottom=Unten bottomAlign=Unten bulletedList=Aufzählungsliste +cannotOpenFile=Kann Datei nicht öffnen center=Zentriert changeOrientation=Orientierung ändern circle=Kreis diff --git a/javascript/examples/grapheditor/www/styles/grapheditor.css b/javascript/examples/grapheditor/www/styles/grapheditor.css index 94389f26c..1c4045c91 100644 --- a/javascript/examples/grapheditor/www/styles/grapheditor.css +++ b/javascript/examples/grapheditor/www/styles/grapheditor.css @@ -46,7 +46,7 @@ -moz-box-shadow: 1px 1px 2px 0px #ddd; box-shadow: 1px 1px 2px 0px #ddd; opacity:0.8; - _filter:alpha(opacity=80); + filter:alpha(opacity=80); } .geAlert { position:absolute; @@ -63,7 +63,7 @@ .geBtn { background-color: #f5f5f5; border-radius: 2px; - border: 1px solid rgba(0,0,0,0.1); + border: 1px solid #d8d8d8; color: #333; cursor: default; font-size: 11px; @@ -215,13 +215,13 @@ border:1px solid transparent; cursor:pointer; opacity:0.5; - _filter:alpha(opacity=50); + filter:alpha(opacity=50); } .geToolbarContainer .geButton:hover { border:1px solid gray; border-radius:2px; opacity:1; - _filter:none !important; + filter:none !important; } .geToolbarContainer .geButton:active { border:1px solid black; @@ -233,30 +233,30 @@ padding:3px 5px 3px 5px; border:1px solid transparent; opacity:0.5; - _filter:alpha(opacity=50); + filter:alpha(opacity=50); } .geToolbarContainer .geLabel:hover { border:1px solid gray; border-radius:2px; opacity:0.9; - _filter:alpha(opacity=90) !important; + filter:alpha(opacity=90) !important; } .geToolbarContainer .geLabel:active { border:1px solid black; opacity:1; - _filter:none !important; + filter:none !important; } .geToolbarContainer .mxDisabled:hover { border:1px solid transparent !important; opacity:0.2 !important; - _filter:alpha(opacity=20) !important; + filter:alpha(opacity=20) !important; } .geToolbarMenu { border:3px solid #e0e0e0 !important; -webkit-box-shadow:none !important; -moz-box-shadow:none !important; box-shadow:none !important; - _filter:none !important; + filter:none !important; } .geSidebarContainer { background:#ffffff; diff --git a/javascript/mxClient.js b/javascript/mxClient.js index e0dec0bf2..fd3e047dc 100644 --- a/javascript/mxClient.js +++ b/javascript/mxClient.js @@ -20,9 +20,9 @@ var mxClient = * * versionMajor.versionMinor.buildNumber.revisionNumber * - * Current version is 3.1.2.1. + * Current version is 3.1.2.2. */ - VERSION: '3.1.2.1', + VERSION: '3.1.2.2', /** * Variable: IS_IE @@ -169,7 +169,7 @@ var mxClient = * Variable: NO_FO * * True if foreignObject support is not available. This is the case for - * Opera and older SVG-based browsers. + * Opera, older SVG-based browsers and all versions of IE. */ NO_FO: !document.createElementNS || document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject') != '[object SVGForeignObjectElement]' || navigator.userAgent.indexOf('Opera/') >= 0, @@ -3698,6 +3698,16 @@ var mxUtils = { return Math.PI * deg / 180; }, + + /** + * Function: toDegree + * + * Converts the given radians to degree. + */ + toDegree: function(rad) + { + return rad * 180 / Math.PI; + }, /** * Function: arcToCurves @@ -14309,8 +14319,10 @@ mxPopupMenu.prototype.isPopupTrigger = function(me) * iconCls - Optional string that represents the CSS class for the image icon. * IconsCls is ignored if image is given. * enabled - Optional boolean indicating if the item is enabled. Default is true. + * active - Optional boolean indicating if the menu should implement any event handling. + * Default is true. */ -mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, enabled) +mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, enabled, active) { parent = parent || this; this.itemCount++; @@ -14374,7 +14386,7 @@ mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, e parent.tbody.appendChild(tr); - if (enabled == null || enabled) + if (active != false && enabled != false) { var currentSelection = null; @@ -14438,7 +14450,16 @@ mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, e // Workaround for lost current selection in page because of focus in IE if (currentSelection != null) { - currentSelection.select(); + // Workaround for "unspecified error" in IE8 standards + try + { + currentSelection.select(); + } + catch (e) + { + // ignore + } + currentSelection = null; } @@ -17436,6 +17457,22 @@ function mxSvgCanvas2D(root, styleEnabled) */ mxUtils.extend(mxSvgCanvas2D, mxAbstractCanvas2D); +/** + * Capability check for DOM parser. + */ +(function() +{ + mxSvgCanvas2D.prototype.useDomParser = !mxClient.IS_IE && typeof DOMParser === 'function' && typeof XMLSerializer === 'function'; + + if (mxSvgCanvas2D.prototype.useDomParser) + { + // Checks using a generic test text if the parsing actually works. This is a workaround + // for older browsers where the capability check returns true but the parsing fails. + var doc = new DOMParser().parseFromString('test text', 'text/html'); + mxSvgCanvas2D.prototype.useDomParser = doc != null; + } +})(); + /** * Variable: path * @@ -18332,6 +18369,53 @@ mxSvgCanvas2D.prototype.image = function(x, y, w, h, src, aspect, flipH, flipV) } }; +/** + * Function: convertHtml + * + * Converts the given HTML string to XHTML. + */ +mxSvgCanvas2D.prototype.convertHtml = function(val) +{ + if (this.useDomParser) + { + var doc = new DOMParser().parseFromString(val, 'text/html'); + + if (doc != null) + { + val = new XMLSerializer().serializeToString(doc.body); + + // Extracts body content from DOM + if (val.substring(0, 5) == '', 5) + 1); + } + + if (val.substring(val.length - 7, val.length) == '') + { + val = val.substring(0, val.length - 7); + } + } + } + else + { + var ta = document.createElement('textarea'); + + // Handles special HTML entities < and > and double escaping + // and converts unclosed br, hr and img tags to XHTML + // LATER: Convert all unclosed tags + ta.innerHTML = val.replace(/&/g, '&amp;'). + replace(/</g, '&lt;').replace(/>/g, '&gt;'). + replace(/</g, '&lt;').replace(/>/g, '&gt;'). + replace(//g, '>'); + val = ta.value.replace(/&/g, '&').replace(/&lt;/g, '<'). + replace(/&gt;/g, '>').replace(/&amp;/g, '&'). + replace(/
    /g, '
    ').replace(/
    /g, '
    '). + replace(/(]+)>/gm, "$1 />"); + } + + return val; +}; + /** * Function: createDiv * @@ -18388,14 +18472,8 @@ mxSvgCanvas2D.prototype.createDiv = function(str, align, valign, style, overflow if (!mxUtils.isNode(val)) { - // Converts HTML entities to unicode since HTML entities are not allowed in XHTML - var ta = document.createElement('textarea'); - ta.innerHTML = val.replace(/"/g, '&quot;').replace(/"/g, '&#34;'). - replace(/</g, '&#60;').replace(/>/g, '&#62;'). - replace(/</g, '&lt;').replace(/>/g, '&gt;'). - replace(//g, '>'); - val = ta.value; - + val = this.convertHtml(val); + if (overflow != 'fill' && overflow != 'width') { // Inner div always needed to measure wrapped text @@ -18407,9 +18485,9 @@ mxSvgCanvas2D.prototype.createDiv = function(str, align, valign, style, overflow } } - // Uses DOM API where available. This cannot be used in IE9/10 to avoid + // Uses DOM API where available. This cannot be used in IE to avoid // an opening and two (!) closing TBODY tags being added to tables. - if (!mxClient.IS_IE && !mxClient.IS_IE11 && document.createElementNS) + if (!mxClient.IS_IE && document.createElementNS) { var div = document.createElementNS('http://www.w3.org/1999/xhtml', 'div'); div.setAttribute('style', style); @@ -18440,10 +18518,6 @@ mxSvgCanvas2D.prototype.createDiv = function(str, align, valign, style, overflow { val = val.outerHTML; } - - // Converts invalid tags to XHTML - // LATER: Check for all unclosed tags - val = val.replace(/
    /g, '
    ').replace(/
    /g, '
    '); // NOTE: FF 3.6 crashes if content CSS contains "height:100%" return mxUtils.parseXml('
    navigator.userAgent.indexOf("MSIE"),IS_OP:0<=navigator.userAgent.indexOf("Opera/"), +var mxClient={VERSION:"3.1.2.2",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE"),IS_OP:0<=navigator.userAgent.indexOf("Opera/"), IS_OT:0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&0>navigator.userAgent.indexOf("Chrome/"),IS_IOS:navigator.userAgent.match(/(iPad|iPhone|iPod)/g)?!0:!1,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_FF:0<=navigator.userAgent.indexOf("Firefox/"), IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")|| 0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/")||null!=document.documentMode&&9<=document.documentMode,NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!=document.createElementNS("http://www.w3.org/2000/svg", @@ -48,13 +48,13 @@ document.createElement("span");e.style.color="blue";e.style.textDecoration="unde c=parseInt(a.offsetHeight);f=d+Math.max(f.clientHeight||0,g.clientHeight);b+c>f&&(a.style.top=Math.max(d,f-c)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c){return(new mxXmlRequest(a,null,"GET")).send(b,c)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load", c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)if(e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e)))d[e]=!c&&"object"==typeof a[e]?mxUtils.clone(a[e]): a[e]}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;ce&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var v=Math.cos(f),y=Math.sin(f),r=-m*(n*y+d*v),s=-m*(c*y-p*v),u=t=0,q=[],x=0;xc&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|= -mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b}, +isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b="",c;for(c in a)try{if(null==a[c])b+=c+" \x3d [null]\n";else if("function"==typeof a[c])b+=c+" \x3d\x3e [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" \x3d\x3e ["+d+"]\n");else b+=c+" \x3d "+a[c]+"\n"}catch(e){b+=c+"\x3d"+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180* +a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m,s=c*c,t=d*d,u=n/s+r/t;1e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var v=Math.cos(f),y=Math.sin(f),r=-m*(n*y+d*v),s=-m*(c*y-p*v),u=t=0,q=[],x=0;xc&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break; +case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b}, reversePortConstraints:function(a){var b=0,b=(a&mxConstants.DIRECTION_MASK_WEST)<<3,b=b|(a&mxConstants.DIRECTION_MASK_NORTH)<<1,b=b|(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|=(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0c.x&&(a=c.x,k=b.x);k>g&&(k=g);ak)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7g&&(b=g,g=e,e=b);g>f&&(g=f);eg?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+ g,d=d+k;return(eg)&&(fk)&&(cl)&&(dm)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0e.x+(document.body.clientWidth||f.clientWidth))b.div.style.left=a.div.offsetLeft-d+(mxClient.IS_IE?6:-6)+"px";mxUtils.fit(b.div)}}; mxPopupMenu.prototype.addSeparator=function(a,b){a=a||this;if(this.smartSeparators&&!b)a.willAddSeparator=!0;else if(null!=a.tbody){a.willAddSeparator=!1;var c=document.createElement("tr"),d=document.createElement("td");d.className="mxPopupMenuIcon";d.style.padding="0 0 0 0px";c.appendChild(d);d=document.createElement("td");d.style.padding="0 0 0 0px";d.setAttribute("colSpan","2");var e=document.createElement("hr");e.setAttribute("size","1");d.appendChild(e);c.appendChild(d);a.tbody.appendChild(c)}}; @@ -278,8 +278,9 @@ mxXmlCanvas2D.prototype.curveTo=function(a,b,c,d,e,f){var g=this.createElement(" mxXmlCanvas2D.prototype.text=function(a,b,c,d,e,f,g,k,l,m,n,p){if(this.textEnabled&&null!=e){mxUtils.isNode(e)&&(e=mxUtils.getOuterHtml(e));var q=this.createElement("text");q.setAttribute("x",this.format(a));q.setAttribute("y",this.format(b));q.setAttribute("w",this.format(c));q.setAttribute("h",this.format(d));q.setAttribute("str",e);null!=f&&q.setAttribute("align",f);null!=g&&q.setAttribute("valign",g);q.setAttribute("wrap",k?"1":"0");null==l&&(l="");q.setAttribute("format",l);null!=m&&q.setAttribute("overflow", m);null!=n&&q.setAttribute("clip",n?"1":"0");null!=p&&q.setAttribute("rotation",p);this.root.appendChild(q)}};mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))};mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))};mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))}; function mxSvgCanvas2D(a,b){mxAbstractCanvas2D.call(this);this.root=a;this.gradients=[];this.defs=null;this.styleEnabled=null!=b?b:!1;var c=null;if(a.ownerDocument!=document)for(c=a;null!=c&&"svg"!=c.nodeName;)c=c.parentNode;null!=c&&(0l.alpha&&m.setAttribute("opacity",l.alpha);e=this.state.transform||"";if(g||k){var n=f=1,p=0,q=0;g&&(f=-1,p=-c-2*a);k&&(n=-1,q=-d-2*b);e+="scale("+f+","+n+")translate("+p*l.scale+","+q*l.scale+")"}0/g,"\x26gt;"),a=b.value.replace(/&/g,"\x26amp;").replace(/&lt;/g,"\x26lt;").replace(/&gt;/g,"\x26gt;").replace(/&amp;/g,"\x26amp;").replace(/
    /g,"\x3cbr /\x3e").replace(/
    /g,"\x3chr /\x3e").replace(/(]+)>/gm,"$1 /\x3e");return a}; mxSvgCanvas2D.prototype.createDiv=function(a,b,c,d,e){c=this.state;var f=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c.fontSize*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT*this.lineHeightCorrection;d="display:inline-block;font-size:"+Math.round(c.fontSize)+"px;font-family:"+c.fontFamily+";color:"+c.fontColor+";line-height:"+f+";"+d;(c.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d+="font-weight:bold;");(c.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d+="font-style:italic;"); -(c.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d+="text-decoration:underline;");b==mxConstants.ALIGN_CENTER?d+="text-align:center;":b==mxConstants.ALIGN_RIGHT&&(d+="text-align:right;");b="";null!=c.fontBackgroundColor&&(b+="background-color:"+c.fontBackgroundColor+";");null!=c.fontBorderColor&&(b+="border:1px solid "+c.fontBorderColor+";");mxUtils.isNode(a)||(c=document.createElement("textarea"),c.innerHTML=a.replace(/"/g,"\x26amp;quot;").replace(/"/g,"\x26amp;#34;").replace(/</g, -"\x26amp;#60;").replace(/>/g,"\x26amp;#62;").replace(/</g,"\x26amp;lt;").replace(/>/g,"\x26amp;gt;").replace(//g,"\x26gt;"),a=c.value,"fill"!=e&&"width"!=e?a='\x3cdiv xmlns\x3d"http://www.w3.org/1999/xhtml" style\x3d"display:inline-block;text-align:inherit;text-decoration:inherit;'+b+'"\x3e'+a+"\x3c/div\x3e":d+=b);if(!mxClient.IS_IE&&!mxClient.IS_IE11&&document.createElementNS)return e=document.createElementNS("http://www.w3.org/1999/xhtml","div"),e.setAttribute("style", -d),mxUtils.isNode(a)?this.root.ownerDocument!=document?e.appendChild(a.cloneNode(!0)):e.appendChild(a):e.innerHTML=a,e;mxUtils.isNode(a)&&this.root.ownerDocument!=document&&(a=a.outerHTML);a=a.replace(/
    /g,"\x3cbr /\x3e").replace(/
    /g,"\x3chr /\x3e");return mxUtils.parseXml('\x3cdiv xmlns\x3d"http://www.w3.org/1999/xhtml" style\x3d"'+d+'"\x3e'+a+"\x3c/div\x3e").documentElement}; +(c.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d+="text-decoration:underline;");b==mxConstants.ALIGN_CENTER?d+="text-align:center;":b==mxConstants.ALIGN_RIGHT&&(d+="text-align:right;");b="";null!=c.fontBackgroundColor&&(b+="background-color:"+c.fontBackgroundColor+";");null!=c.fontBorderColor&&(b+="border:1px solid "+c.fontBorderColor+";");mxUtils.isNode(a)||(a=this.convertHtml(a),"fill"!=e&&"width"!=e?a='\x3cdiv xmlns\x3d"http://www.w3.org/1999/xhtml" style\x3d"display:inline-block;text-align:inherit;text-decoration:inherit;'+ +b+'"\x3e'+a+"\x3c/div\x3e":d+=b);if(!mxClient.IS_IE&&document.createElementNS)return e=document.createElementNS("http://www.w3.org/1999/xhtml","div"),e.setAttribute("style",d),mxUtils.isNode(a)?this.root.ownerDocument!=document?e.appendChild(a.cloneNode(!0)):e.appendChild(a):e.innerHTML=a,e;mxUtils.isNode(a)&&this.root.ownerDocument!=document&&(a=a.outerHTML);return mxUtils.parseXml('\x3cdiv xmlns\x3d"http://www.w3.org/1999/xhtml" style\x3d"'+d+'"\x3e'+a+"\x3c/div\x3e").documentElement}; mxSvgCanvas2D.prototype.text=function(a,b,c,d,e,f,g,k,l,m,n,p){if(this.textEnabled&&null!=e){p=null!=p?p:0;var q=this.state;a+=q.dx;b+=q.dy;if(this.foEnabled&&"html"==l){var r="vertical-align:top;";n?r+="overflow:hidden;max-height:"+Math.round(d)+"px;max-width:"+Math.round(c)+"px;":"fill"==m?r+="width:"+Math.round(c)+"px;height:"+Math.round(d)+"px;":"width"==m&&(r+="width:"+Math.round(c)+"px;",0q.alpha&&s.setAttribute("opacity",q.alpha);var t=this.createElement("foreignObject");t.setAttribute("pointer-events","all");r=this.createDiv(e,f,g,r,m);if(null!=r){s.appendChild(t);this.root.appendChild(s);var u=0,v=0,y=v=2;if(mxClient.IS_IE&&(9==document.documentMode||!mxClient.IS_SVG)){var x=document.createElement("div");x.style.cssText=r.getAttribute("style");x.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";x.style.position="absolute"; x.style.visibility="hidden";var z=document.createElement("div");z.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";z.innerHTML=mxUtils.isNode(e)?e.outerHTML:e;x.appendChild(z);document.body.appendChild(x);8!=document.documentMode&&(9!=document.documentMode&&null!=q.fontBorderColor)&&(v+=2,y+=2);if(k&&0a.medianValue?-1:b.medianValuee.maxRank-e.minRank-1)){for(var f=e.getGeneralPurposeVariable(e.minRank+1),g=!0,k=0,l=e.minRank+2;le.minRank+1;l--)q=e.getX(l-1),p==q?(n[l-e.minRank-2]=p,g++):this.repositionValid(b,e,l-1,p)?(n[l-e.minRank-2]=p,g++):(n[l-e.minRank-2]=e.getX(l-1),p=q);if(g>k||f>k)if(g>=f)for(l=e.maxRank-2;l>e.minRank;l--)e.setX(l,n[l-e.minRank-1]);else if(f>g)for(l=e.minRank+2;le)return!1;f=b.getGeneralPurposeVariable(c);if(df){if(e==a.length-1)return!0;a=a[e+1];c=a.getGeneralPurposeVariable(c);c=c-a.width/2-this.intraCellSpacing-b.width/2;if(!(c>=d))return!1}return!0}; -mxCoordinateAssignment.prototype.setCellLocations=function(a,b){this.rankTopY=[];this.rankBottomY=[];for(var c=0;ck;k++){if(-1(f+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep,p-=this.prefHozEdgeSep);l=(p-n)/f;n+=l/2;p=this.minEdgeJetty-this.prefVertEdgeOff;for(m=q=0;mf/2&&(p-=this.prefVertEdgeOff);for(t=0;ta.weightedValue?-1:b.weightedValuef&&(f=l,e=k)}}0==c.length&&null!=e&&c.push(e)}return c}; @@ -771,7 +774,7 @@ function mxPrintPreview(a,b,c,d,e,f,g,k,l){this.graph=a;this.scale=null!=b?b:1/a mxPrintPreview.prototype.autoOrigin=!0;mxPrintPreview.prototype.printOverlays=!1;mxPrintPreview.prototype.printControls=!1;mxPrintPreview.prototype.printBackgroundImage=!1;mxPrintPreview.prototype.borderColor=null;mxPrintPreview.prototype.title=null;mxPrintPreview.prototype.pageSelector=null;mxPrintPreview.prototype.wnd=null;mxPrintPreview.prototype.pageCount=0;mxPrintPreview.prototype.getWindow=function(){return this.wnd}; mxPrintPreview.prototype.getDoctype=function(){var a="";5==document.documentMode?a='\x3cmeta http-equiv\x3d"X-UA-Compatible" content\x3d"IE\x3d5"\x3e':8==document.documentMode?a='\x3cmeta http-equiv\x3d"X-UA-Compatible" content\x3d"IE\x3d8"\x3e':8this.graph.tolerance||Math.abs(a.getGraphY()-this.startY)>this.graph.tolerance))this.inTolerance=!1};mxVertexHandler.prototype.updateHint=function(a){};mxVertexHandler.prototype.removeHint=function(){};mxVertexHandler.prototype.roundAngle=function(a){return Math.round(a)};mxVertexHandler.prototype.roundLength=function(a){return Math.round(a)}; mxVertexHandler.prototype.mouseMove=function(a,b){if(!b.isConsumed()&&null!=this.index){this.checkTolerance(b);if(!this.inTolerance){var c=new mxPoint(b.getGraphX(),b.getGraphY()),d=this.graph.isGridEnabledEvent(b.getEvent()),e=this.graph.view.scale,f=this.graph.view.translate;if(this.index<=mxEvent.CUSTOM_HANDLE)null!=this.customHandles&&this.customHandles[mxEvent.CUSTOM_HANDLE-this.index].processEvent(b);else if(this.index==mxEvent.LABEL_HANDLE)d&&(c.x=(this.graph.snap(c.x/e-f.x)+f.x)*e,c.y=(this.graph.snap(c.y/ -e-f.y)+f.y)*e),this.moveSizerTo(this.sizers[this.sizers.length-1],c.x,c.y);else if(this.index==mxEvent.ROTATION_HANDLE){var g=this.state.x+this.state.width/2-c.x,k=this.state.y+this.state.height/2-c.y;this.currentAlpha=0!=g?180*Math.atan(k/g)/Math.PI+90:0>k?180:0;0k?180:0;0= 0, diff --git a/javascript/src/js/shape/mxText.js b/javascript/src/js/shape/mxText.js index 79abc401e..dec7b117e 100644 --- a/javascript/src/js/shape/mxText.js +++ b/javascript/src/js/shape/mxText.js @@ -381,6 +381,7 @@ mxText.prototype.updateBoundingBox = function() { if (rot != 0) { + this.unrotatedBoundingBox = mxRectangle.fromRectangle(this.boundingBox); var bbox = mxUtils.getBoundingBox(this.boundingBox, rot); this.boundingBox.x = bbox.x; diff --git a/javascript/src/js/util/mxPopupMenu.js b/javascript/src/js/util/mxPopupMenu.js index 19cc1b9d9..6ffd6416d 100644 --- a/javascript/src/js/util/mxPopupMenu.js +++ b/javascript/src/js/util/mxPopupMenu.js @@ -189,8 +189,10 @@ mxPopupMenu.prototype.isPopupTrigger = function(me) * iconCls - Optional string that represents the CSS class for the image icon. * IconsCls is ignored if image is given. * enabled - Optional boolean indicating if the item is enabled. Default is true. + * active - Optional boolean indicating if the menu should implement any event handling. + * Default is true. */ -mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, enabled) +mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, enabled, active) { parent = parent || this; this.itemCount++; @@ -254,7 +256,7 @@ mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, e parent.tbody.appendChild(tr); - if (enabled == null || enabled) + if (active != false && enabled != false) { var currentSelection = null; @@ -318,7 +320,16 @@ mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, e // Workaround for lost current selection in page because of focus in IE if (currentSelection != null) { - currentSelection.select(); + // Workaround for "unspecified error" in IE8 standards + try + { + currentSelection.select(); + } + catch (e) + { + // ignore + } + currentSelection = null; } diff --git a/javascript/src/js/util/mxSvgCanvas2D.js b/javascript/src/js/util/mxSvgCanvas2D.js index 1be3a5c5e..1bb63d861 100644 --- a/javascript/src/js/util/mxSvgCanvas2D.js +++ b/javascript/src/js/util/mxSvgCanvas2D.js @@ -139,6 +139,22 @@ function mxSvgCanvas2D(root, styleEnabled) */ mxUtils.extend(mxSvgCanvas2D, mxAbstractCanvas2D); +/** + * Capability check for DOM parser. + */ +(function() +{ + mxSvgCanvas2D.prototype.useDomParser = !mxClient.IS_IE && typeof DOMParser === 'function' && typeof XMLSerializer === 'function'; + + if (mxSvgCanvas2D.prototype.useDomParser) + { + // Checks using a generic test text if the parsing actually works. This is a workaround + // for older browsers where the capability check returns true but the parsing fails. + var doc = new DOMParser().parseFromString('test text', 'text/html'); + mxSvgCanvas2D.prototype.useDomParser = doc != null; + } +})(); + /** * Variable: path * @@ -1035,6 +1051,53 @@ mxSvgCanvas2D.prototype.image = function(x, y, w, h, src, aspect, flipH, flipV) } }; +/** + * Function: convertHtml + * + * Converts the given HTML string to XHTML. + */ +mxSvgCanvas2D.prototype.convertHtml = function(val) +{ + if (this.useDomParser) + { + var doc = new DOMParser().parseFromString(val, 'text/html'); + + if (doc != null) + { + val = new XMLSerializer().serializeToString(doc.body); + + // Extracts body content from DOM + if (val.substring(0, 5) == '', 5) + 1); + } + + if (val.substring(val.length - 7, val.length) == '') + { + val = val.substring(0, val.length - 7); + } + } + } + else + { + var ta = document.createElement('textarea'); + + // Handles special HTML entities < and > and double escaping + // and converts unclosed br, hr and img tags to XHTML + // LATER: Convert all unclosed tags + ta.innerHTML = val.replace(/&/g, '&amp;'). + replace(/</g, '&lt;').replace(/>/g, '&gt;'). + replace(/</g, '&lt;').replace(/>/g, '&gt;'). + replace(//g, '>'); + val = ta.value.replace(/&/g, '&').replace(/&lt;/g, '<'). + replace(/&gt;/g, '>').replace(/&amp;/g, '&'). + replace(/
    /g, '
    ').replace(/
    /g, '
    '). + replace(/(]+)>/gm, "$1 />"); + } + + return val; +}; + /** * Function: createDiv * @@ -1091,14 +1154,8 @@ mxSvgCanvas2D.prototype.createDiv = function(str, align, valign, style, overflow if (!mxUtils.isNode(val)) { - // Converts HTML entities to unicode since HTML entities are not allowed in XHTML - var ta = document.createElement('textarea'); - ta.innerHTML = val.replace(/"/g, '&quot;').replace(/"/g, '&#34;'). - replace(/</g, '&#60;').replace(/>/g, '&#62;'). - replace(/</g, '&lt;').replace(/>/g, '&gt;'). - replace(//g, '>'); - val = ta.value; - + val = this.convertHtml(val); + if (overflow != 'fill' && overflow != 'width') { // Inner div always needed to measure wrapped text @@ -1110,9 +1167,9 @@ mxSvgCanvas2D.prototype.createDiv = function(str, align, valign, style, overflow } } - // Uses DOM API where available. This cannot be used in IE9/10 to avoid + // Uses DOM API where available. This cannot be used in IE to avoid // an opening and two (!) closing TBODY tags being added to tables. - if (!mxClient.IS_IE && !mxClient.IS_IE11 && document.createElementNS) + if (!mxClient.IS_IE && document.createElementNS) { var div = document.createElementNS('http://www.w3.org/1999/xhtml', 'div'); div.setAttribute('style', style); @@ -1143,10 +1200,6 @@ mxSvgCanvas2D.prototype.createDiv = function(str, align, valign, style, overflow { val = val.outerHTML; } - - // Converts invalid tags to XHTML - // LATER: Check for all unclosed tags - val = val.replace(/
    /g, '
    ').replace(/
    /g, '
    '); // NOTE: FF 3.6 crashes if content CSS contains "height:100%" return mxUtils.parseXml('