diff --git a/src/mxgraph/shape/mxArrow.js b/src/mxgraph/shape/mxArrow.js index 04c405e10..9a704f390 100644 --- a/src/mxgraph/shape/mxArrow.js +++ b/src/mxgraph/shape/mxArrow.js @@ -4,6 +4,7 @@ * Updated to ES9 syntax by David Morrissey 2021 */ import mxShape from './mxShape'; +import mxConstants from "../util/mxConstants"; class mxArrow extends mxShape { /** diff --git a/src/pages/Guides.js b/src/pages/Guides.js index fb2a43c82..2cb9eab7e 100644 --- a/src/pages/Guides.js +++ b/src/pages/Guides.js @@ -12,8 +12,13 @@ import React from 'react'; import mxEvent from '../mxgraph/util/mxEvent'; import mxGraph from '../mxgraph/view/mxGraph'; import mxRubberband from '../mxgraph/handler/mxRubberband'; +import mxGraphHandler from '../mxgraph/handler/mxGraphHandler'; +import mxEdgeHandler from '../mxgraph/handler/mxEdgeHandler'; +import mxConstants from '../mxgraph/util/mxConstants'; +import mxEdgeStyle from '../mxgraph/view/mxEdgeStyle'; +import mxKeyHandler from '../mxgraph/handler/mxKeyHandler'; -class MYNAMEHERE extends React.Component { +class Guides extends React.Component { constructor(props) { super(props); } @@ -23,161 +28,120 @@ class MYNAMEHERE extends React.Component { return ( <>

Guides example for mxGraph

-
{ this.el = el; }} style={{ - + overflow: 'hidden', + width: '801px', + height: '601px', + background: "url('editors/images/grid.gif')", + cursor: 'default', }} /> ); - }; + } componentDidMount() { + // Enables guides + mxGraphHandler.prototype.guidesEnabled = true; - }; + // Alt disables guides + mxGraphHandler.prototype.useGuidesForEvent = function(me) { + return !mxEvent.isAltDown(me.getEvent()); + }; + + // Defines the guides to be red (default) + mxConstants.GUIDE_COLOR = '#FF0000'; + + // Defines the guides to be 1 pixel (default) + mxConstants.GUIDE_STROKEWIDTH = 1; + + // Enables snapping waypoints to terminals + mxEdgeHandler.prototype.snapToTerminals = true; + + // Creates the graph inside the given container + const graph = new mxGraph(this.el); + graph.setConnectable(true); + graph.gridSize = 30; + + // Changes the default style for edges "in-place" and assigns + // an alternate edge style which is applied in mxGraph.flip + // when the user double clicks on the adjustment control point + // of the edge. The ElbowConnector edge style switches to TopToBottom + // if the horizontal style is true. + const style = graph.getStylesheet().getDefaultEdgeStyle(); + style[mxConstants.STYLE_ROUNDED] = true; + style[mxConstants.STYLE_EDGE] = mxEdgeStyle.ElbowConnector; + graph.alternateEdgeStyle = 'elbow=vertical'; + + // Enables rubberband selection + new mxRubberband(graph); + + // Gets the default parent for inserting new cells. This + // is normally the first child of the root (ie. layer 0). + const parent = graph.getDefaultParent(); + + // Adds cells to the model in a single step + graph.getModel().beginUpdate(); + let v1; + try { + v1 = graph.insertVertex(parent, null, 'Hello,', 20, 40, 80, 70); + const v2 = graph.insertVertex(parent, null, 'World!', 200, 140, 80, 40); + const e1 = graph.insertEdge(parent, null, '', v1, v2); + } finally { + // Updates the display + graph.getModel().endUpdate(); + } + + // Handles cursor keys + const nudge = function(keyCode) { + if (!graph.isSelectionEmpty()) { + let dx = 0; + let dy = 0; + + if (keyCode === 37) { + dx = -1; + } else if (keyCode === 38) { + dy = -1; + } else if (keyCode === 39) { + dx = 1; + } else if (keyCode === 40) { + dy = 1; + } + + graph.moveCells(graph.getSelectionCells(), dx, dy); + } + + // Transfer initial focus to graph container for keystroke handling + graph.container.focus(); + + // Handles keystroke events + const keyHandler = new mxKeyHandler(graph); + + // Ignores enter keystroke. Remove this line if you want the + // enter keystroke to stop editing + keyHandler.enter = function() {}; + + keyHandler.bindKey(37, function() { + nudge(37); + }); + + keyHandler.bindKey(38, function() { + nudge(38); + }); + + keyHandler.bindKey(39, function() { + nudge(39); + }); + + keyHandler.bindKey(40, function() { + nudge(40); + }); + }; + } } -export default MYNAMEHERE; - - - function main(container) - { - // Checks if the browser is supported - if (!mxClient.isBrowserSupported()) - { - // Displays an error message if the browser is not supported. - mxUtils.error('Browser is not supported!', 200, false); - } - else - { - // Enables guides - mxGraphHandler.prototype.guidesEnabled = true; - - // Alt disables guides - mxGraphHandler.prototype.useGuidesForEvent = function(me) - { - return !mxEvent.isAltDown(me.getEvent()); - }; - - // Defines the guides to be red (default) - mxConstants.GUIDE_COLOR = '#FF0000'; - - // Defines the guides to be 1 pixel (default) - mxConstants.GUIDE_STROKEWIDTH = 1; - - // Enables snapping waypoints to terminals - mxEdgeHandler.prototype.snapToTerminals = true; - - // Creates the graph inside the given container - let graph = new mxGraph(container); - graph.setConnectable(true); - graph.gridSize = 30; - - // Changes the default style for edges "in-place" and assigns - // an alternate edge style which is applied in mxGraph.flip - // when the user double clicks on the adjustment control point - // of the edge. The ElbowConnector edge style switches to TopToBottom - // if the horizontal style is true. - let style = graph.getStylesheet().getDefaultEdgeStyle(); - style[mxConstants.STYLE_ROUNDED] = true; - style[mxConstants.STYLE_EDGE] = mxEdgeStyle.ElbowConnector; - graph.alternateEdgeStyle = 'elbow=vertical'; - - // Enables rubberband selection - new mxRubberband(graph); - - // Gets the default parent for inserting new cells. This - // is normally the first child of the root (ie. layer 0). - let parent = graph.getDefaultParent(); - - // Adds cells to the model in a single step - graph.getModel().beginUpdate(); - var v1; - try - { - v1 = graph.insertVertex(parent, null, 'Hello,', 20, 40, 80, 70); - var v2 = graph.insertVertex(parent, null, 'World!', 200, 140, 80, 40); - var e1 = graph.insertEdge(parent, null, '', v1, v2); - } - finally - { - // Updates the display - graph.getModel().endUpdate(); - } - - // Handles cursor keys - let nudge = function(keyCode) - { - if (!graph.isSelectionEmpty()) - { - let dx = 0; - let dy = 0; - - if (keyCode == 37) - { - dx = -1; - } - else if (keyCode == 38) - { - dy = -1; - } - else if (keyCode == 39) - { - dx = 1; - } - else if (keyCode == 40) - { - dy = 1; - } - - graph.moveCells(graph.getSelectionCells(), dx, dy); - } - }; - - // Transfer initial focus to graph container for keystroke handling - graph.container.focus(); - - // Handles keystroke events - let keyHandler = new mxKeyHandler(graph); - - // Ignores enter keystroke. Remove this line if you want the - // enter keystroke to stop editing - keyHandler.enter = function() {}; - - keyHandler.bindKey(37, function() - { - nudge(37); - }); - - keyHandler.bindKey(38, function() - { - nudge(38); - }); - - keyHandler.bindKey(39, function() - { - nudge(39); - }); - - keyHandler.bindKey(40, function() - { - nudge(40); - }); - } - }; - - - - - - - -
-
- - +export default Guides; diff --git a/src/pages/Handles.js b/src/pages/Handles.js index 8befe38c3..9eaa67182 100644 --- a/src/pages/Handles.js +++ b/src/pages/Handles.js @@ -8,8 +8,15 @@ import React from 'react'; import mxEvent from '../mxgraph/util/mxEvent'; import mxGraph from '../mxgraph/view/mxGraph'; import mxRubberband from '../mxgraph/handler/mxRubberband'; +import mxUtils from '../mxgraph/util/mxUtils'; +import mxVertexHandler from '../mxgraph/handler/mxVertexHandler'; +import mxCellRenderer from '../mxgraph/view/mxCellRenderer'; +import mxRectangle from '../mxgraph/util/mxRectangle'; +import mxCylinder from '../mxgraph/shape/mxCylinder'; +import mxPoint from '../mxgraph/util/mxPoint'; +import mxHandle from '../mxgraph/handler/mxHandle'; -class MYNAMEHERE extends React.Component { +class Handles extends React.Component { constructor(props) { super(props); } @@ -19,196 +26,249 @@ class MYNAMEHERE extends React.Component { return ( <>

Handles example for mxGraph

-
{ this.el = el; }} style={{ - + position: 'relative', + overflow: 'hidden', + width: '621px', + height: '441px', + background: "url('editors/images/grid.gif')", + cursor: 'default', }} /> ); - }; + } componentDidMount() { + class MyShape extends mxCylinder { + defaultPos1 = 20; - }; -} + defaultPos2 = 60; -export default MYNAMEHERE; + getLabelBounds(rect) { + const pos1 = + mxUtils.getValue(this.style, 'pos1', this.defaultPos1) * this.scale; + const pos2 = + mxUtils.getValue(this.style, 'pos2', this.defaultPos2) * this.scale; + return new mxRectangle( + rect.x, + rect.y + pos1, + rect.width, + Math.min(rect.height, pos2) - Math.max(0, pos1) + ); + } - function MyShape() - { - mxCylinder.call(this); - }; + redrawPath(path, x, y, w, h, isForeground) { + const pos1 = mxUtils.getValue(this.style, 'pos1', this.defaultPos1); + const pos2 = mxUtils.getValue(this.style, 'pos2', this.defaultPos2); - mxUtils.extend(MyShape, mxCylinder); + if (isForeground) { + if (pos1 < h) { + path.moveTo(0, pos1); + path.lineTo(w, pos1); + } - MyShape.prototype.defaultPos1 = 20; - MyShape.prototype.defaultPos2 = 60; - - MyShape.prototype.getLabelBounds = function(rect) - { - var pos1 = mxUtils.getValue(this.style, 'pos1', this.defaultPos1) * this.scale; - var pos2 = mxUtils.getValue(this.style, 'pos2', this.defaultPos2) * this.scale; - - return new mxRectangle(rect.x, rect.y + pos1, rect.width, Math.min(rect.height, pos2) - Math.max(0, pos1)); - }; - - MyShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var pos1 = mxUtils.getValue(this.style, 'pos1', this.defaultPos1); - var pos2 = mxUtils.getValue(this.style, 'pos2', this.defaultPos2); - - if (isForeground) - { - if (pos1 < h) - { - path.moveTo(0, pos1); - path.lineTo(w, pos1); - } - - if (pos2 < h) - { - path.moveTo(0, pos2); - path.lineTo(w, pos2); + if (pos2 < h) { + path.moveTo(0, pos2); + path.lineTo(w, pos2); + } + } else { + path.rect(0, 0, w, h); } } - else - { - path.rect(0, 0, w, h); - } - }; - + } mxCellRenderer.registerShape('myShape', MyShape); - mxVertexHandler.prototype.createCustomHandles = function() - { - if (this.state.style['shape'] == 'myShape') - { - // Implements the handle for the first divider - let firstHandle = new mxHandle(this.state); + class MyCustomVertexHandler extends mxVertexHandler { + livePreview = true; - firstHandle.getPosition = function(bounds) - { - var pos2 = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'pos2', MyShape.prototype.defaultPos2)))); - var pos1 = Math.max(0, Math.min(pos2, parseFloat(mxUtils.getValue(this.state.style, 'pos1', MyShape.prototype.defaultPos1)))); + rotationEnabled = true; - return new mxPoint(bounds.getCenterX(), bounds.y + pos1); - }; + createCustomHandles() { + if (this.state.style.shape === 'myShape') { + // Implements the handle for the first divider + const firstHandle = new mxHandle(this.state); - firstHandle.setPosition = function(bounds, pt) - { - var pos2 = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'pos2', MyShape.prototype.defaultPos2)))); + firstHandle.getPosition = function(bounds) { + const pos2 = Math.max( + 0, + Math.min( + bounds.height, + parseFloat( + mxUtils.getValue( + this.state.style, + 'pos2', + MyShape.prototype.defaultPos2 + ) + ) + ) + ); + const pos1 = Math.max( + 0, + Math.min( + pos2, + parseFloat( + mxUtils.getValue( + this.state.style, + 'pos1', + MyShape.prototype.defaultPos1 + ) + ) + ) + ); - this.state.style['pos1'] = Math.round(Math.max(0, Math.min(pos2, pt.y - bounds.y))); - }; + return new mxPoint(bounds.getCenterX(), bounds.y + pos1); + }; - firstHandle.execute = function() - { - this.copyStyle('pos1'); + firstHandle.setPosition = function(bounds, pt) { + const pos2 = Math.max( + 0, + Math.min( + bounds.height, + parseFloat( + mxUtils.getValue( + this.state.style, + 'pos2', + MyShape.prototype.defaultPos2 + ) + ) + ) + ); + + this.state.style.pos1 = Math.round( + Math.max(0, Math.min(pos2, pt.y - bounds.y)) + ); + }; + + firstHandle.execute = function() { + this.copyStyle('pos1'); + }; + + firstHandle.ignoreGrid = true; + + // Implements the handle for the second divider + const secondHandle = new mxHandle(this.state); + + secondHandle.getPosition = function(bounds) { + const pos1 = Math.max( + 0, + Math.min( + bounds.height, + parseFloat( + mxUtils.getValue( + this.state.style, + 'pos1', + MyShape.prototype.defaultPos1 + ) + ) + ) + ); + const pos2 = Math.max( + pos1, + Math.min( + bounds.height, + parseFloat( + mxUtils.getValue( + this.state.style, + 'pos2', + MyShape.prototype.defaultPos2 + ) + ) + ) + ); + + return new mxPoint(bounds.getCenterX(), bounds.y + pos2); + }; + + secondHandle.setPosition = function(bounds, pt) { + const pos1 = Math.max( + 0, + Math.min( + bounds.height, + parseFloat( + mxUtils.getValue( + this.state.style, + 'pos1', + MyShape.prototype.defaultPos1 + ) + ) + ) + ); + + this.state.style.pos2 = Math.round( + Math.max(pos1, Math.min(bounds.height, pt.y - bounds.y)) + ); + }; + + secondHandle.execute = function() { + this.copyStyle('pos2'); + }; + + secondHandle.ignoreGrid = true; + + return [firstHandle, secondHandle]; } - firstHandle.ignoreGrid = true; - - // Implements the handle for the second divider - let secondHandle = new mxHandle(this.state); - - secondHandle.getPosition = function(bounds) - { - var pos1 = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'pos1', MyShape.prototype.defaultPos1)))); - var pos2 = Math.max(pos1, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'pos2', MyShape.prototype.defaultPos2)))); - - return new mxPoint(bounds.getCenterX(), bounds.y + pos2); - }; - - secondHandle.setPosition = function(bounds, pt) - { - var pos1 = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'pos1', MyShape.prototype.defaultPos1)))); - - this.state.style['pos2'] = Math.round(Math.max(pos1, Math.min(bounds.height, pt.y - bounds.y))); - }; - - secondHandle.execute = function() - { - this.copyStyle('pos2'); - } - - secondHandle.ignoreGrid = true; - - return [firstHandle, secondHandle]; + return null; } + } - return null; - }; - - mxVertexHandler.prototype.livePreview = true; - mxVertexHandler.prototype.rotationEnabled = true; - - // Program starts here. Creates a sample graph in the - // DOM node with the specified ID. This function is invoked - // from the onLoad event handler of the document (see below). - function main(container) - { - // Checks if the browser is supported - if (!mxClient.isBrowserSupported()) - { - // Displays an error message if the browser is not supported. - mxUtils.error('Browser is not supported!', 200, false); + class MyCustomGraph extends mxGraph { + createVertexHandler(state) { + return new MyCustomVertexHandler(state); } - else - { - // Disables the built-in context menu - mxEvent.disableContextMenu(container); + } - // Creates the graph inside the given container - let graph = new mxGraph(container); - graph.setCellsCloneable(true); - graph.setHtmlLabels(true); - graph.setPanning(true); - graph.centerZoom = false; + // Disables the built-in context menu + mxEvent.disableContextMenu(this.el); - // Enables rubberband selection - new mxRubberband(graph); + // Creates the graph inside the given container + const graph = new MyCustomGraph(this.el); + graph.setCellsCloneable(true); + graph.setHtmlLabels(true); + graph.setPanning(true); + graph.centerZoom = false; - // Gets the default parent for inserting new cells. This - // is normally the first child of the root (ie. layer 0). - let parent = graph.getDefaultParent(); + // Enables rubberband selection + new mxRubberband(graph); - // Adds cells to the model in a single step - graph.getModel().beginUpdate(); - try - { - var v1 = graph.insertVertex(parent, null, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - 20, 20, 240, 120, 'shape=myShape;whiteSpace=wrap;overflow=hidden;pos1=30;pos2=80;'); - } - finally - { - // Updates the display - graph.getModel().endUpdate(); - } + // Gets the default parent for inserting new cells. This + // is normally the first child of the root (ie. layer 0). + const parent = graph.getDefaultParent(); - document.body.appendChild(mxUtils.button('+', function() - { - graph.zoomIn(); - })); - document.body.appendChild(mxUtils.button('-', function() - { - graph.zoomOut(); - })); - } - }; - - + // Adds cells to the model in a single step + graph.getModel().beginUpdate(); + try { + const v1 = graph.insertVertex( + parent, + null, + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + 20, + 20, + 240, + 120, + 'shape=myShape;whiteSpace=wrap;overflow=hidden;pos1=30;pos2=80;' + ); + } finally { + // Updates the display + graph.getModel().endUpdate(); + } - - + document.body.appendChild( + mxUtils.button('+', function() { + graph.zoomIn(); + }) + ); + document.body.appendChild( + mxUtils.button('-', function() { + graph.zoomOut(); + }) + ); + } +} - -
-
- - +export default Handles; diff --git a/src/pages/HelloPort.js b/src/pages/HelloPort.js index c31c48206..0854a37f4 100644 --- a/src/pages/HelloPort.js +++ b/src/pages/HelloPort.js @@ -9,8 +9,13 @@ import React from 'react'; import mxEvent from '../mxgraph/util/mxEvent'; import mxGraph from '../mxgraph/view/mxGraph'; import mxRubberband from '../mxgraph/handler/mxRubberband'; +import mxConstants from '../mxgraph/util/mxConstants'; +import mxEdgeStyle from '../mxgraph/view/mxEdgeStyle'; +import mxPoint from '../mxgraph/util/mxPoint'; +import mxCodec from '../mxgraph/io/mxCodec'; +import mxUtils from '../mxgraph/util/mxUtils'; -class MYNAMEHERE extends React.Component { +class HelloPort extends React.Component { constructor(props) { super(props); } @@ -20,140 +25,99 @@ class MYNAMEHERE extends React.Component { return ( <>

Hello, World! example for mxGraph

-
{ this.el = el; }} style={{ - + overflow: 'hidden', + width: '321px', + height: '241px', + background: "url('editors/images/grid.gif')", + cursor: 'default', + }} + /> +
{ + this.el2 = el; }} /> ); - }; + } componentDidMount() { + // Creates the graph inside the given container + const graph = new mxGraph(this.el); + graph.setConnectable(true); + graph.setTooltips(true); - }; + // Sets the default edge style + const style = graph.getStylesheet().getDefaultEdgeStyle(); + style[mxConstants.STYLE_EDGE] = mxEdgeStyle.ElbowConnector; + + // Ports are not used as terminals for edges, they are + // only used to compute the graphical connection point + graph.isPort = function(cell) { + const geo = this.getCellGeometry(cell); + + return geo != null ? geo.relative : false; + }; + + // Implements a tooltip that shows the actual + // source and target of an edge + graph.getTooltipForCell = function(cell) { + if (this.model.isEdge(cell)) { + return `${this.convertValueToString( + this.model.getTerminal(cell, true) + )} => ${this.convertValueToString( + this.model.getTerminal(cell, false) + )}`; + } + + return mxGraph.prototype.getTooltipForCell.apply(this, arguments); + }; + + // Removes the folding icon and disables any folding + graph.isCellFoldable = function(cell) { + return false; + }; + + // Enables rubberband selection + new mxRubberband(graph); + + // Gets the default parent for inserting new cells. This + // is normally the first child of the root (ie. layer 0). + const parent = graph.getDefaultParent(); + + // Adds cells to the model in a single step + graph.getModel().beginUpdate(); + try { + const v1 = graph.insertVertex(parent, null, 'Hello', 20, 80, 80, 30); + v1.setConnectable(false); + const v11 = graph.insertVertex(v1, null, '', 1, 1, 10, 10); + v11.geometry.offset = new mxPoint(-5, -5); + v11.geometry.relative = true; + const v12 = graph.insertVertex(v1, null, '', 1, 0, 10, 10); + v12.geometry.offset = new mxPoint(-5, -5); + v12.geometry.relative = true; + const v2 = graph.insertVertex(parent, null, 'World!', 200, 150, 80, 30); + const v3 = graph.insertVertex(parent, null, 'World2', 200, 20, 80, 30); + var e1 = graph.insertEdge(parent, null, '', v11, v2); + var e1 = graph.insertEdge(parent, null, '', v12, v3); + } finally { + // Updates the display + graph.getModel().endUpdate(); + } + + const button = mxUtils.button('View XML', function() { + const encoder = new mxCodec(); + const node = encoder.encode(graph.getModel()); + mxUtils.popup(mxUtils.getPrettyXml(node), true); + }); + + this.el2.appendChild(button); + } } -export default MYNAMEHERE; - - - - - - - - - - - - - - - - - - - - -
-
- - +export default HelloPort; diff --git a/src/pages/HierarchicalLayout.js b/src/pages/HierarchicalLayout.js index 076111ab5..7f771f9c7 100644 --- a/src/pages/HierarchicalLayout.js +++ b/src/pages/HierarchicalLayout.js @@ -10,8 +10,13 @@ import React from 'react'; import mxEvent from '../mxgraph/util/mxEvent'; import mxGraph from '../mxgraph/view/mxGraph'; import mxRubberband from '../mxgraph/handler/mxRubberband'; +import mxHierarchicalLayout from '../mxgraph/layout/hierarchical/mxHierarchicalLayout'; +import mxFastOrganicLayout from '../mxgraph/layout/mxFastOrganicLayout'; +import mxConstants from '../mxgraph/util/mxConstants'; +import mxPerimeter from '../mxgraph/view/mxPerimeter'; +import mxUtils from "../mxgraph/util/mxUtils"; -class MYNAMEHERE extends React.Component { +class HierarchicalLayout extends React.Component { constructor(props) { super(props); } @@ -21,149 +26,102 @@ class MYNAMEHERE extends React.Component { return ( <>

Hierarchical Layout example for mxGraph

-
{ this.el = el; }} style={{ - + position: 'absolute', + overflow: 'auto', + top: '36px', + bottom: '0px', + left: '0px', + right: '0px', + borderTop: 'gray 1px solid', }} /> ); - }; + } componentDidMount() { + // Creates the graph inside the given container + const graph = new mxGraph(this.el); - }; + // Adds rubberband selection + new mxRubberband(graph); + + // Changes the default vertex style in-place + let style = graph.getStylesheet().getDefaultVertexStyle(); + style[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter; + style[mxConstants.STYLE_GRADIENTCOLOR] = 'white'; + style[mxConstants.STYLE_PERIMETER_SPACING] = 6; + style[mxConstants.STYLE_ROUNDED] = true; + style[mxConstants.STYLE_SHADOW] = true; + + style = graph.getStylesheet().getDefaultEdgeStyle(); + style[mxConstants.STYLE_ROUNDED] = true; + + // Creates a layout algorithm to be used + // with the graph + const layout = new mxHierarchicalLayout(graph); + const organic = new mxFastOrganicLayout(graph); + organic.forceConstant = 120; + + const parent = graph.getDefaultParent(); + + // Adds a button to execute the layout + let button = document.createElement('button'); + mxUtils.write(button, 'Hierarchical'); + mxEvent.addListener(button, 'click', function(evt) { + layout.execute(parent); + }); + document.body.appendChild(button); + + // Adds a button to execute the layout + button = document.createElement('button'); + mxUtils.write(button, 'Organic'); + + mxEvent.addListener(button, 'click', function(evt) { + organic.execute(parent); + }); + + document.body.appendChild(button); + + // Load cells and layouts the graph + graph.getModel().beginUpdate(); + try { + const v1 = graph.insertVertex(parent, null, '1', 0, 0, 80, 30); + const v2 = graph.insertVertex(parent, null, '2', 0, 0, 80, 30); + const v3 = graph.insertVertex(parent, null, '3', 0, 0, 80, 30); + const v4 = graph.insertVertex(parent, null, '4', 0, 0, 80, 30); + const v5 = graph.insertVertex(parent, null, '5', 0, 0, 80, 30); + const v6 = graph.insertVertex(parent, null, '6', 0, 0, 80, 30); + const v7 = graph.insertVertex(parent, null, '7', 0, 0, 80, 30); + const v8 = graph.insertVertex(parent, null, '8', 0, 0, 80, 30); + const v9 = graph.insertVertex(parent, null, '9', 0, 0, 80, 30); + + const e1 = graph.insertEdge(parent, null, '', v1, v2); + const e2 = graph.insertEdge(parent, null, '', v1, v3); + const e3 = graph.insertEdge(parent, null, '', v3, v4); + const e4 = graph.insertEdge(parent, null, '', v2, v5); + const e5 = graph.insertEdge(parent, null, '', v1, v6); + const e6 = graph.insertEdge(parent, null, '', v2, v3); + const e7 = graph.insertEdge(parent, null, '', v6, v4); + const e8 = graph.insertEdge(parent, null, '', v6, v1); + const e9 = graph.insertEdge(parent, null, '', v6, v7); + const e10 = graph.insertEdge(parent, null, '', v7, v8); + const e11 = graph.insertEdge(parent, null, '', v7, v9); + const e12 = graph.insertEdge(parent, null, '', v7, v6); + const e13 = graph.insertEdge(parent, null, '', v7, v5); + + // Executes the layout + layout.execute(parent); + } finally { + // Updates the display + graph.getModel().endUpdate(); + } + } } -export default MYNAMEHERE; - - - - - - - - - - - - - - - - - - - - -
-
- - +export default HierarchicalLayout; diff --git a/src/pages/HoverIcons.js b/src/pages/HoverIcons.js index 036ba2d1d..7b046e1f9 100644 --- a/src/pages/HoverIcons.js +++ b/src/pages/HoverIcons.js @@ -1,6 +1,6 @@ /** * Copyright (c) 2006-2013, JGraph Ltd - + Hover icons example for mxGraph. This example demonstrates showing icons on vertices as mouse hovers over them. */ @@ -9,8 +9,12 @@ import React from 'react'; import mxEvent from '../mxgraph/util/mxEvent'; import mxGraph from '../mxgraph/view/mxGraph'; import mxRubberband from '../mxgraph/handler/mxRubberband'; +import mxConnectionHandler from '../mxgraph/handler/mxConnectionHandler'; +import mxUtils from '../mxgraph/util/mxUtils'; +import mxRectangle from "../mxgraph/util/mxRectangle"; +import mxImage from "../mxgraph/util/mxImage"; -class MYNAMEHERE extends React.Component { +class HoverIcons extends React.Component { constructor(props) { super(props); } @@ -26,44 +30,30 @@ class MYNAMEHERE extends React.Component { this.el = el; }} style={{ - + overflow: 'hidden', + width: '321px', + height: '241px', + background: "url('editors/images/grid.gif')", + cursor: 'default', }} /> ); - }; + } componentDidMount() { - - }; -} - -export default MYNAMEHERE; - - - - - - - - - - - - - - - - - + let tmp = graph.view.getState(me.getCell()); - -
-
- - + // Ignores everything but vertices + if ( + graph.isMouseDown || + (tmp != null && !graph.getModel().isVertex(tmp.cell)) + ) { + tmp = null; + } + + if (tmp != this.currentState) { + if (this.currentState != null) { + this.dragLeave(me.getEvent(), this.currentState); + } + + this.currentState = tmp; + + if (this.currentState != null) { + this.dragEnter(me.getEvent(), this.currentState); + } + } + }, + mouseUp(sender, me) {}, + dragEnter(evt, state) { + if (this.currentIconSet == null) { + this.currentIconSet = new mxIconSet(state); + } + }, + dragLeave(evt, state) { + if (this.currentIconSet != null) { + this.currentIconSet.destroy(); + this.currentIconSet = null; + } + }, + }); + + // Enables rubberband selection + new mxRubberband(graph); + + // Gets the default parent for inserting new cells. This + // is normally the first child of the root (ie. layer 0). + const parent = graph.getDefaultParent(); + + // Adds cells to the model in a single step + graph.getModel().beginUpdate(); + try { + const v1 = graph.insertVertex(parent, null, 'Hello,', 20, 20, 80, 30); + const v2 = graph.insertVertex(parent, null, 'World!', 200, 150, 80, 30); + const e1 = graph.insertEdge(parent, null, '', v1, v2); + } finally { + // Updates the display + graph.getModel().endUpdate(); + } + } +} + +export default HoverIcons; diff --git a/src/pages/HoverStyle.js b/src/pages/HoverStyle.js index c46f21707..c02687eb7 100644 --- a/src/pages/HoverStyle.js +++ b/src/pages/HoverStyle.js @@ -9,8 +9,9 @@ import React from 'react'; import mxEvent from '../mxgraph/util/mxEvent'; import mxGraph from '../mxgraph/view/mxGraph'; import mxRubberband from '../mxgraph/handler/mxRubberband'; +import mxConstants from "../mxgraph/util/mxConstants"; -class MYNAMEHERE extends React.Component { +class HoverStyle extends React.Component { constructor(props) { super(props); } @@ -20,183 +21,127 @@ class MYNAMEHERE extends React.Component { return ( <>

Hoverstyle example for mxGraph

-
{ this.el = el; }} style={{ - + position: 'relative', + overflow: 'hidden', + width: '321px', + height: '241px', + background: "url('editors/images/grid.gif')", + cursor: 'default', }} /> ); - }; + } componentDidMount() { + // Creates the graph inside the given container + const graph = new mxGraph(this.el); - }; -} - -export default MYNAMEHERE; - - - - - - - - - - - - - - - + }, + dragLeave(evt, state) { + if (state != null) { + state.style = this.previousStyle; + updateStyle(state, false); + state.shape.apply(state); + state.shape.redraw(); - - + if (state.text != null) { + state.text.apply(state); + state.text.redraw(); + } + } + }, + }); - -
-
- - + // Enables rubberband selection + new mxRubberband(graph); + + // Gets the default parent for inserting new cells. This + // is normally the first child of the root (ie. layer 0). + const parent = graph.getDefaultParent(); + + // Adds cells to the model in a single step + graph.getModel().beginUpdate(); + try { + const v1 = graph.insertVertex(parent, null, 'Hello,', 20, 20, 80, 30); + const v2 = graph.insertVertex(parent, null, 'World!', 200, 150, 80, 30); + const e1 = graph.insertEdge(parent, null, '', v1, v2); + } finally { + // Updates the display + graph.getModel().endUpdate(); + } + } +} + +export default HoverStyle; diff --git a/src/pages/Images.js b/src/pages/Images.js index 15e3bb1e6..0d5e3acd0 100644 --- a/src/pages/Images.js +++ b/src/pages/Images.js @@ -9,8 +9,13 @@ import React from 'react'; import mxEvent from '../mxgraph/util/mxEvent'; import mxGraph from '../mxgraph/view/mxGraph'; import mxRubberband from '../mxgraph/handler/mxRubberband'; +import mxConstants from '../mxgraph/util/mxConstants'; +import mxUtils from '../mxgraph/util/mxUtils'; +import mxRectangle from '../mxgraph/util/mxRectangle'; +import mxImage from '../mxgraph/util/mxImage'; +import mxPerimeter from "../mxgraph/view/mxPerimeter"; -class MYNAMEHERE extends React.Component { +class Images extends React.Component { constructor(props) { super(props); } @@ -20,94 +25,94 @@ class MYNAMEHERE extends React.Component { return ( <>

Images example for mxGraph

-
{ this.el = el; }} style={{ - + position: 'relative', + overflow: 'hidden', + width: '360px', + height: '200px', + cursor: 'default', }} /> ); - }; + } componentDidMount() { + // Creates the graph inside the given container + const graph = new mxGraph(this.el); - }; -} + // Sets a background image and restricts child movement to its bounds + graph.setBackgroundImage( + new mxImage('images/gradient_background.jpg', 360, 200) + ); + graph.maximumGraphBounds = new mxRectangle(0, 0, 360, 200); -export default MYNAMEHERE; + // Resizes the container but never make it bigger than the background + graph.minimumContainerSize = new mxRectangle(0, 0, 360, 200); + graph.setResizeContainer(true); + // Disables basic selection and cell handling + // graph.setEnabled(false); + configureStylesheet(graph); - - - + // Gets the default parent for inserting new cells. This + // is normally the first child of the root (ie. layer 0). + const parent = graph.getDefaultParent(); - - + // Adds cells to the model in a single step + graph.getModel().beginUpdate(); + try { + var v1 = graph.insertVertex( + parent, + null, + 'First Line\nSecond Line', + 20, + 10, + 80, + 100, + 'bottom' + ); + var v1 = graph.insertVertex( + parent, + null, + 'First Line\nSecond Line', + 130, + 10, + 80, + 100, + 'top' + ); + var v1 = graph.insertVertex(parent, null, '', 230, 10, 100, 100, 'image'); + var v2 = graph.insertVertex( + parent, + null, + 'First Line\nSecond Line', + 20, + 130, + 140, + 60, + 'right' + ); + var v2 = graph.insertVertex( + parent, + null, + 'First Line\nSecond Line', + 180, + 130, + 140, + 60, + 'left' + ); + } finally { + // Updates the display + graph.getModel().endUpdate(); + } - - - - - - + } + } +} - - - - -
-
- - +export default Images; diff --git a/src/pages/Indicators.js b/src/pages/Indicators.js index ce9d4dbf8..6d75d61cb 100644 --- a/src/pages/Indicators.js +++ b/src/pages/Indicators.js @@ -7,11 +7,12 @@ */ import React from 'react'; -import mxEvent from '../mxgraph/util/mxEvent'; import mxGraph from '../mxgraph/view/mxGraph'; -import mxRubberband from '../mxgraph/handler/mxRubberband'; +import mxConstants from '../mxgraph/util/mxConstants'; +import mxEdgeStyle from '../mxgraph/view/mxEdgeStyle'; +import mxKeyHandler from '../mxgraph/handler/mxKeyHandler'; -class MYNAMEHERE extends React.Component { +class Indicators extends React.Component { constructor(props) { super(props); } @@ -21,114 +22,83 @@ class MYNAMEHERE extends React.Component { return ( <>

Indicators example for mxGraph

-
{ this.el = el; }} style={{ - + position: 'relative', + overflow: 'hidden', + height: '300ph', }} /> ); - }; + } componentDidMount() { + // Creates the graph inside the given container + const graph = new mxGraph(this.el); + graph.setConnectable(true); + new mxKeyHandler(graph); - }; + // Enables moving of vertex labels + graph.vertexLabelsMovable = true; + + // Creates a style with an indicator + let style = graph.getStylesheet().getDefaultVertexStyle(); + + style[mxConstants.STYLE_SHAPE] = 'label'; + style[mxConstants.STYLE_VERTICAL_ALIGN] = 'bottom'; + style[mxConstants.STYLE_INDICATOR_SHAPE] = 'ellipse'; + style[mxConstants.STYLE_INDICATOR_WIDTH] = 34; + style[mxConstants.STYLE_INDICATOR_HEIGHT] = 34; + style[mxConstants.STYLE_IMAGE_VERTICAL_ALIGN] = 'top'; // indicator v-alignment + style[mxConstants.STYLE_IMAGE_ALIGN] = 'center'; + style[mxConstants.STYLE_INDICATOR_COLOR] = 'green'; + delete style[mxConstants.STYLE_STROKECOLOR]; // transparent + delete style[mxConstants.STYLE_FILLCOLOR]; // transparent + + // Creates a style with an indicator + style = graph.getStylesheet().getDefaultEdgeStyle(); + + style[mxConstants.STYLE_EDGE] = mxEdgeStyle.ElbowConnector; + style[mxConstants.STYLE_ELBOW] = mxConstants.ELBOW_VERTICAL; + style[mxConstants.STYLE_ROUNDED] = true; + + // Gets the default parent for inserting new cells. This + // is normally the first child of the root (ie. layer 0). + const parent = graph.getDefaultParent(); + + // Adds cells to the model in a single step + graph.getModel().beginUpdate(); + try { + graph.insertVertex(parent, null, 'Bottom Label', 80, 80, 80, 60); + graph.insertVertex( + parent, + null, + 'Top Label', + 200, + 80, + 60, + 60, + 'indicatorShape=actor;indicatorWidth=28;indicatorColor=blue;imageVerticalAlign=bottom;verticalAlign=top' + ); + graph.insertVertex( + parent, + null, + 'Right Label', + 300, + 80, + 120, + 60, + 'indicatorShape=cloud;indicatorWidth=40;indicatorColor=#00FFFF;imageVerticalAlign=center;verticalAlign=middle;imageAlign=left;align=left;spacingLeft=44' + ); + } finally { + // Updates the display + graph.getModel().endUpdate(); + } + } } -export default MYNAMEHERE; - - - - - - - - - - - - - - - - - - - - -
-
- - +export default Indicators; diff --git a/src/pages/index.js b/src/pages/index.js index 94770bd80..4d156c04e 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -51,6 +51,14 @@ import Layers from "./Layers"; import Labels from "./Labels"; import LabelPosition from "./LabelPosition"; import JsonData from "./JsonData"; +import Indicators from "./Indicators"; +import Images from "./Images"; +import HoverIcons from "./HoverIcons"; +import HoverStyle from "./HoverStyle"; +import HierarchicalLayout from "./HierarchicalLayout"; +import HelloPort from "./HelloPort"; +import Handles from "./Handles"; +import Guides from "./Guides"; export default function Home() { return ( @@ -79,6 +87,14 @@ export default function Home() { + + + + {/**/} + + + + diff --git a/src/pages/editors/config/diagrameditor.xml b/src/public/editors/config/diagrameditor.xml similarity index 100% rename from src/pages/editors/config/diagrameditor.xml rename to src/public/editors/config/diagrameditor.xml diff --git a/src/pages/editors/config/editor-commons.xml b/src/public/editors/config/editor-commons.xml similarity index 100% rename from src/pages/editors/config/editor-commons.xml rename to src/public/editors/config/editor-commons.xml diff --git a/src/pages/editors/config/keyhandler-commons.xml b/src/public/editors/config/keyhandler-commons.xml similarity index 100% rename from src/pages/editors/config/keyhandler-commons.xml rename to src/public/editors/config/keyhandler-commons.xml diff --git a/src/pages/editors/config/keyhandler-minimal.xml b/src/public/editors/config/keyhandler-minimal.xml similarity index 100% rename from src/pages/editors/config/keyhandler-minimal.xml rename to src/public/editors/config/keyhandler-minimal.xml diff --git a/src/pages/editors/config/layouteditor.xml b/src/public/editors/config/layouteditor.xml similarity index 100% rename from src/pages/editors/config/layouteditor.xml rename to src/public/editors/config/layouteditor.xml diff --git a/src/pages/editors/config/processeditor.xml b/src/public/editors/config/processeditor.xml similarity index 100% rename from src/pages/editors/config/processeditor.xml rename to src/public/editors/config/processeditor.xml diff --git a/src/pages/editors/config/wfeditor-commons.xml b/src/public/editors/config/wfeditor-commons.xml similarity index 100% rename from src/pages/editors/config/wfeditor-commons.xml rename to src/public/editors/config/wfeditor-commons.xml diff --git a/src/pages/editors/config/wfgraph-commons.xml b/src/public/editors/config/wfgraph-commons.xml similarity index 100% rename from src/pages/editors/config/wfgraph-commons.xml rename to src/public/editors/config/wfgraph-commons.xml diff --git a/src/pages/editors/config/wftoolbar-commons.xml b/src/public/editors/config/wftoolbar-commons.xml similarity index 100% rename from src/pages/editors/config/wftoolbar-commons.xml rename to src/public/editors/config/wftoolbar-commons.xml diff --git a/src/pages/editors/config/workfloweditor.xml b/src/public/editors/config/workfloweditor.xml similarity index 100% rename from src/pages/editors/config/workfloweditor.xml rename to src/public/editors/config/workfloweditor.xml diff --git a/src/pages/editors/css/process.css b/src/public/editors/css/process.css similarity index 100% rename from src/pages/editors/css/process.css rename to src/public/editors/css/process.css diff --git a/src/pages/editors/css/wordpress.css b/src/public/editors/css/wordpress.css similarity index 100% rename from src/pages/editors/css/wordpress.css rename to src/public/editors/css/wordpress.css diff --git a/src/pages/editors/diagrameditor.html b/src/public/editors/diagrameditor.html similarity index 100% rename from src/pages/editors/diagrameditor.html rename to src/public/editors/diagrameditor.html diff --git a/src/pages/editors/diagrams/empty.xml b/src/public/editors/diagrams/empty.xml similarity index 100% rename from src/pages/editors/diagrams/empty.xml rename to src/public/editors/diagrams/empty.xml diff --git a/src/pages/editors/diagrams/swimlanes.xml b/src/public/editors/diagrams/swimlanes.xml similarity index 100% rename from src/pages/editors/diagrams/swimlanes.xml rename to src/public/editors/diagrams/swimlanes.xml diff --git a/src/pages/editors/diagrams/travel-booking.xml b/src/public/editors/diagrams/travel-booking.xml similarity index 100% rename from src/pages/editors/diagrams/travel-booking.xml rename to src/public/editors/diagrams/travel-booking.xml diff --git a/src/pages/editors/diagrams/withdrawal.xml b/src/public/editors/diagrams/withdrawal.xml similarity index 100% rename from src/pages/editors/diagrams/withdrawal.xml rename to src/public/editors/diagrams/withdrawal.xml diff --git a/src/pages/editors/grapheditor.html b/src/public/editors/grapheditor.html similarity index 100% rename from src/pages/editors/grapheditor.html rename to src/public/editors/grapheditor.html diff --git a/src/pages/editors/help/index-all.html b/src/public/editors/help/index-all.html similarity index 100% rename from src/pages/editors/help/index-all.html rename to src/public/editors/help/index-all.html diff --git a/src/pages/editors/help/index.html b/src/public/editors/help/index.html similarity index 100% rename from src/pages/editors/help/index.html rename to src/public/editors/help/index.html diff --git a/src/pages/editors/images/actor.gif b/src/public/editors/images/actor.gif similarity index 100% rename from src/pages/editors/images/actor.gif rename to src/public/editors/images/actor.gif diff --git a/src/pages/editors/images/alignbottom.gif b/src/public/editors/images/alignbottom.gif similarity index 100% rename from src/pages/editors/images/alignbottom.gif rename to src/public/editors/images/alignbottom.gif diff --git a/src/pages/editors/images/aligncenter.gif b/src/public/editors/images/aligncenter.gif similarity index 100% rename from src/pages/editors/images/aligncenter.gif rename to src/public/editors/images/aligncenter.gif diff --git a/src/pages/editors/images/alignleft.gif b/src/public/editors/images/alignleft.gif similarity index 100% rename from src/pages/editors/images/alignleft.gif rename to src/public/editors/images/alignleft.gif diff --git a/src/pages/editors/images/alignmiddle.gif b/src/public/editors/images/alignmiddle.gif similarity index 100% rename from src/pages/editors/images/alignmiddle.gif rename to src/public/editors/images/alignmiddle.gif diff --git a/src/pages/editors/images/alignright.gif b/src/public/editors/images/alignright.gif similarity index 100% rename from src/pages/editors/images/alignright.gif rename to src/public/editors/images/alignright.gif diff --git a/src/pages/editors/images/aligntop.gif b/src/public/editors/images/aligntop.gif similarity index 100% rename from src/pages/editors/images/aligntop.gif rename to src/public/editors/images/aligntop.gif diff --git a/src/pages/editors/images/arrow.gif b/src/public/editors/images/arrow.gif similarity index 100% rename from src/pages/editors/images/arrow.gif rename to src/public/editors/images/arrow.gif diff --git a/src/pages/editors/images/bell.png b/src/public/editors/images/bell.png similarity index 100% rename from src/pages/editors/images/bell.png rename to src/public/editors/images/bell.png diff --git a/src/pages/editors/images/bg.gif b/src/public/editors/images/bg.gif similarity index 100% rename from src/pages/editors/images/bg.gif rename to src/public/editors/images/bg.gif diff --git a/src/pages/editors/images/block_end.gif b/src/public/editors/images/block_end.gif similarity index 100% rename from src/pages/editors/images/block_end.gif rename to src/public/editors/images/block_end.gif diff --git a/src/pages/editors/images/block_start.gif b/src/public/editors/images/block_start.gif similarity index 100% rename from src/pages/editors/images/block_start.gif rename to src/public/editors/images/block_start.gif diff --git a/src/pages/editors/images/bold.gif b/src/public/editors/images/bold.gif similarity index 100% rename from src/pages/editors/images/bold.gif rename to src/public/editors/images/bold.gif diff --git a/src/pages/editors/images/bottom.gif b/src/public/editors/images/bottom.gif similarity index 100% rename from src/pages/editors/images/bottom.gif rename to src/public/editors/images/bottom.gif diff --git a/src/pages/editors/images/box.png b/src/public/editors/images/box.png similarity index 100% rename from src/pages/editors/images/box.png rename to src/public/editors/images/box.png diff --git a/src/pages/editors/images/camera.gif b/src/public/editors/images/camera.gif similarity index 100% rename from src/pages/editors/images/camera.gif rename to src/public/editors/images/camera.gif diff --git a/src/pages/editors/images/center.gif b/src/public/editors/images/center.gif similarity index 100% rename from src/pages/editors/images/center.gif rename to src/public/editors/images/center.gif diff --git a/src/pages/editors/images/classic_end.gif b/src/public/editors/images/classic_end.gif similarity index 100% rename from src/pages/editors/images/classic_end.gif rename to src/public/editors/images/classic_end.gif diff --git a/src/pages/editors/images/classic_start.gif b/src/public/editors/images/classic_start.gif similarity index 100% rename from src/pages/editors/images/classic_start.gif rename to src/public/editors/images/classic_start.gif diff --git a/src/pages/editors/images/cloud.gif b/src/public/editors/images/cloud.gif similarity index 100% rename from src/pages/editors/images/cloud.gif rename to src/public/editors/images/cloud.gif diff --git a/src/pages/editors/images/cmp-bg.gif b/src/public/editors/images/cmp-bg.gif similarity index 100% rename from src/pages/editors/images/cmp-bg.gif rename to src/public/editors/images/cmp-bg.gif diff --git a/src/pages/editors/images/collapse.gif b/src/public/editors/images/collapse.gif similarity index 100% rename from src/pages/editors/images/collapse.gif rename to src/public/editors/images/collapse.gif diff --git a/src/pages/editors/images/connect.gif b/src/public/editors/images/connect.gif similarity index 100% rename from src/pages/editors/images/connect.gif rename to src/public/editors/images/connect.gif diff --git a/src/pages/editors/images/connector.gif b/src/public/editors/images/connector.gif similarity index 100% rename from src/pages/editors/images/connector.gif rename to src/public/editors/images/connector.gif diff --git a/src/pages/editors/images/console.gif b/src/public/editors/images/console.gif similarity index 100% rename from src/pages/editors/images/console.gif rename to src/public/editors/images/console.gif diff --git a/src/pages/editors/images/copy.gif b/src/public/editors/images/copy.gif similarity index 100% rename from src/pages/editors/images/copy.gif rename to src/public/editors/images/copy.gif diff --git a/src/pages/editors/images/cube_green.png b/src/public/editors/images/cube_green.png similarity index 100% rename from src/pages/editors/images/cube_green.png rename to src/public/editors/images/cube_green.png diff --git a/src/pages/editors/images/cut.gif b/src/public/editors/images/cut.gif similarity index 100% rename from src/pages/editors/images/cut.gif rename to src/public/editors/images/cut.gif diff --git a/src/pages/editors/images/cylinder.gif b/src/public/editors/images/cylinder.gif similarity index 100% rename from src/pages/editors/images/cylinder.gif rename to src/public/editors/images/cylinder.gif diff --git a/src/pages/editors/images/delete.gif b/src/public/editors/images/delete.gif similarity index 100% rename from src/pages/editors/images/delete.gif rename to src/public/editors/images/delete.gif diff --git a/src/pages/editors/images/diagram.gif b/src/public/editors/images/diagram.gif similarity index 100% rename from src/pages/editors/images/diagram.gif rename to src/public/editors/images/diagram.gif diff --git a/src/pages/editors/images/diamond_end.gif b/src/public/editors/images/diamond_end.gif similarity index 100% rename from src/pages/editors/images/diamond_end.gif rename to src/public/editors/images/diamond_end.gif diff --git a/src/pages/editors/images/diamond_start.gif b/src/public/editors/images/diamond_start.gif similarity index 100% rename from src/pages/editors/images/diamond_start.gif rename to src/public/editors/images/diamond_start.gif diff --git a/src/pages/editors/images/doubleellipse.gif b/src/public/editors/images/doubleellipse.gif similarity index 100% rename from src/pages/editors/images/doubleellipse.gif rename to src/public/editors/images/doubleellipse.gif diff --git a/src/pages/editors/images/down.gif b/src/public/editors/images/down.gif similarity index 100% rename from src/pages/editors/images/down.gif rename to src/public/editors/images/down.gif diff --git a/src/pages/editors/images/draw/drawbg.jpg b/src/public/editors/images/draw/drawbg.jpg similarity index 100% rename from src/pages/editors/images/draw/drawbg.jpg rename to src/public/editors/images/draw/drawbg.jpg diff --git a/src/pages/editors/images/draw/drawbgcolor.jpg b/src/public/editors/images/draw/drawbgcolor.jpg similarity index 100% rename from src/pages/editors/images/draw/drawbgcolor.jpg rename to src/public/editors/images/draw/drawbgcolor.jpg diff --git a/src/pages/editors/images/draw/drawfooter.jpg b/src/public/editors/images/draw/drawfooter.jpg similarity index 100% rename from src/pages/editors/images/draw/drawfooter.jpg rename to src/public/editors/images/draw/drawfooter.jpg diff --git a/src/pages/editors/images/draw/drawheader.jpg b/src/public/editors/images/draw/drawheader.jpg similarity index 100% rename from src/pages/editors/images/draw/drawheader.jpg rename to src/public/editors/images/draw/drawheader.jpg diff --git a/src/pages/editors/images/draw/mxlogo.jpg b/src/public/editors/images/draw/mxlogo.jpg similarity index 100% rename from src/pages/editors/images/draw/mxlogo.jpg rename to src/public/editors/images/draw/mxlogo.jpg diff --git a/src/pages/editors/images/dude3.png b/src/public/editors/images/dude3.png similarity index 100% rename from src/pages/editors/images/dude3.png rename to src/public/editors/images/dude3.png diff --git a/src/pages/editors/images/earth.png b/src/public/editors/images/earth.png similarity index 100% rename from src/pages/editors/images/earth.png rename to src/public/editors/images/earth.png diff --git a/src/pages/editors/images/ellipse.gif b/src/public/editors/images/ellipse.gif similarity index 100% rename from src/pages/editors/images/ellipse.gif rename to src/public/editors/images/ellipse.gif diff --git a/src/pages/editors/images/entity.gif b/src/public/editors/images/entity.gif similarity index 100% rename from src/pages/editors/images/entity.gif rename to src/public/editors/images/entity.gif diff --git a/src/pages/editors/images/expand.gif b/src/public/editors/images/expand.gif similarity index 100% rename from src/pages/editors/images/expand.gif rename to src/public/editors/images/expand.gif diff --git a/src/pages/editors/images/fillcolor.gif b/src/public/editors/images/fillcolor.gif similarity index 100% rename from src/pages/editors/images/fillcolor.gif rename to src/public/editors/images/fillcolor.gif diff --git a/src/pages/editors/images/fit.gif b/src/public/editors/images/fit.gif similarity index 100% rename from src/pages/editors/images/fit.gif rename to src/public/editors/images/fit.gif diff --git a/src/pages/editors/images/font.gif b/src/public/editors/images/font.gif similarity index 100% rename from src/pages/editors/images/font.gif rename to src/public/editors/images/font.gif diff --git a/src/pages/editors/images/fontcolor.gif b/src/public/editors/images/fontcolor.gif similarity index 100% rename from src/pages/editors/images/fontcolor.gif rename to src/public/editors/images/fontcolor.gif diff --git a/src/pages/editors/images/gear.gif b/src/public/editors/images/gear.gif similarity index 100% rename from src/pages/editors/images/gear.gif rename to src/public/editors/images/gear.gif diff --git a/src/pages/editors/images/gear.png b/src/public/editors/images/gear.png similarity index 100% rename from src/pages/editors/images/gear.png rename to src/public/editors/images/gear.png diff --git a/src/pages/editors/images/grid.gif b/src/public/editors/images/grid.gif similarity index 100% rename from src/pages/editors/images/grid.gif rename to src/public/editors/images/grid.gif diff --git a/src/pages/editors/images/group.gif b/src/public/editors/images/group.gif similarity index 100% rename from src/pages/editors/images/group.gif rename to src/public/editors/images/group.gif diff --git a/src/pages/editors/images/help.gif b/src/public/editors/images/help.gif similarity index 100% rename from src/pages/editors/images/help.gif rename to src/public/editors/images/help.gif diff --git a/src/pages/editors/images/hexagon.gif b/src/public/editors/images/hexagon.gif similarity index 100% rename from src/pages/editors/images/hexagon.gif rename to src/public/editors/images/hexagon.gif diff --git a/src/pages/editors/images/hline.gif b/src/public/editors/images/hline.gif similarity index 100% rename from src/pages/editors/images/hline.gif rename to src/public/editors/images/hline.gif diff --git a/src/pages/editors/images/house.gif b/src/public/editors/images/house.gif similarity index 100% rename from src/pages/editors/images/house.gif rename to src/public/editors/images/house.gif diff --git a/src/pages/editors/images/house.png b/src/public/editors/images/house.png similarity index 100% rename from src/pages/editors/images/house.png rename to src/public/editors/images/house.png diff --git a/src/pages/editors/images/image.gif b/src/public/editors/images/image.gif similarity index 100% rename from src/pages/editors/images/image.gif rename to src/public/editors/images/image.gif diff --git a/src/pages/editors/images/italic.gif b/src/public/editors/images/italic.gif similarity index 100% rename from src/pages/editors/images/italic.gif rename to src/public/editors/images/italic.gif diff --git a/src/pages/editors/images/left.gif b/src/public/editors/images/left.gif similarity index 100% rename from src/pages/editors/images/left.gif rename to src/public/editors/images/left.gif diff --git a/src/pages/editors/images/linecolor.gif b/src/public/editors/images/linecolor.gif similarity index 100% rename from src/pages/editors/images/linecolor.gif rename to src/public/editors/images/linecolor.gif diff --git a/src/pages/editors/images/link.gif b/src/public/editors/images/link.gif similarity index 100% rename from src/pages/editors/images/link.gif rename to src/public/editors/images/link.gif diff --git a/src/pages/editors/images/loading.gif b/src/public/editors/images/loading.gif similarity index 100% rename from src/pages/editors/images/loading.gif rename to src/public/editors/images/loading.gif diff --git a/src/pages/editors/images/middle.gif b/src/public/editors/images/middle.gif similarity index 100% rename from src/pages/editors/images/middle.gif rename to src/public/editors/images/middle.gif diff --git a/src/pages/editors/images/new.gif b/src/public/editors/images/new.gif similarity index 100% rename from src/pages/editors/images/new.gif rename to src/public/editors/images/new.gif diff --git a/src/pages/editors/images/open.gif b/src/public/editors/images/open.gif similarity index 100% rename from src/pages/editors/images/open.gif rename to src/public/editors/images/open.gif diff --git a/src/pages/editors/images/open_end.gif b/src/public/editors/images/open_end.gif similarity index 100% rename from src/pages/editors/images/open_end.gif rename to src/public/editors/images/open_end.gif diff --git a/src/pages/editors/images/open_start.gif b/src/public/editors/images/open_start.gif similarity index 100% rename from src/pages/editors/images/open_start.gif rename to src/public/editors/images/open_start.gif diff --git a/src/pages/editors/images/outline.gif b/src/public/editors/images/outline.gif similarity index 100% rename from src/pages/editors/images/outline.gif rename to src/public/editors/images/outline.gif diff --git a/src/pages/editors/images/oval_end.gif b/src/public/editors/images/oval_end.gif similarity index 100% rename from src/pages/editors/images/oval_end.gif rename to src/public/editors/images/oval_end.gif diff --git a/src/pages/editors/images/oval_start.gif b/src/public/editors/images/oval_start.gif similarity index 100% rename from src/pages/editors/images/oval_start.gif rename to src/public/editors/images/oval_start.gif diff --git a/src/pages/editors/images/overlays/check.png b/src/public/editors/images/overlays/check.png similarity index 100% rename from src/pages/editors/images/overlays/check.png rename to src/public/editors/images/overlays/check.png diff --git a/src/pages/editors/images/overlays/error.png b/src/public/editors/images/overlays/error.png similarity index 100% rename from src/pages/editors/images/overlays/error.png rename to src/public/editors/images/overlays/error.png diff --git a/src/pages/editors/images/overlays/flash.png b/src/public/editors/images/overlays/flash.png similarity index 100% rename from src/pages/editors/images/overlays/flash.png rename to src/public/editors/images/overlays/flash.png diff --git a/src/pages/editors/images/overlays/forbidden.png b/src/public/editors/images/overlays/forbidden.png similarity index 100% rename from src/pages/editors/images/overlays/forbidden.png rename to src/public/editors/images/overlays/forbidden.png diff --git a/src/pages/editors/images/overlays/help.png b/src/public/editors/images/overlays/help.png similarity index 100% rename from src/pages/editors/images/overlays/help.png rename to src/public/editors/images/overlays/help.png diff --git a/src/pages/editors/images/overlays/house.png b/src/public/editors/images/overlays/house.png similarity index 100% rename from src/pages/editors/images/overlays/house.png rename to src/public/editors/images/overlays/house.png diff --git a/src/pages/editors/images/overlays/information.png b/src/public/editors/images/overlays/information.png similarity index 100% rename from src/pages/editors/images/overlays/information.png rename to src/public/editors/images/overlays/information.png diff --git a/src/pages/editors/images/overlays/lightbulb_on.png b/src/public/editors/images/overlays/lightbulb_on.png similarity index 100% rename from src/pages/editors/images/overlays/lightbulb_on.png rename to src/public/editors/images/overlays/lightbulb_on.png diff --git a/src/pages/editors/images/overlays/pencil.png b/src/public/editors/images/overlays/pencil.png similarity index 100% rename from src/pages/editors/images/overlays/pencil.png rename to src/public/editors/images/overlays/pencil.png diff --git a/src/pages/editors/images/overlays/printer.png b/src/public/editors/images/overlays/printer.png similarity index 100% rename from src/pages/editors/images/overlays/printer.png rename to src/public/editors/images/overlays/printer.png diff --git a/src/pages/editors/images/overlays/user3.png b/src/public/editors/images/overlays/user3.png similarity index 100% rename from src/pages/editors/images/overlays/user3.png rename to src/public/editors/images/overlays/user3.png diff --git a/src/pages/editors/images/overlays/users3.png b/src/public/editors/images/overlays/users3.png similarity index 100% rename from src/pages/editors/images/overlays/users3.png rename to src/public/editors/images/overlays/users3.png diff --git a/src/pages/editors/images/overlays/workplace.png b/src/public/editors/images/overlays/workplace.png similarity index 100% rename from src/pages/editors/images/overlays/workplace.png rename to src/public/editors/images/overlays/workplace.png diff --git a/src/pages/editors/images/package.png b/src/public/editors/images/package.png similarity index 100% rename from src/pages/editors/images/package.png rename to src/public/editors/images/package.png diff --git a/src/pages/editors/images/pan.gif b/src/public/editors/images/pan.gif similarity index 100% rename from src/pages/editors/images/pan.gif rename to src/public/editors/images/pan.gif diff --git a/src/pages/editors/images/paste.gif b/src/public/editors/images/paste.gif similarity index 100% rename from src/pages/editors/images/paste.gif rename to src/public/editors/images/paste.gif diff --git a/src/pages/editors/images/plain.gif b/src/public/editors/images/plain.gif similarity index 100% rename from src/pages/editors/images/plain.gif rename to src/public/editors/images/plain.gif diff --git a/src/pages/editors/images/preferences.gif b/src/public/editors/images/preferences.gif similarity index 100% rename from src/pages/editors/images/preferences.gif rename to src/public/editors/images/preferences.gif diff --git a/src/pages/editors/images/press.gif b/src/public/editors/images/press.gif similarity index 100% rename from src/pages/editors/images/press.gif rename to src/public/editors/images/press.gif diff --git a/src/pages/editors/images/preview.gif b/src/public/editors/images/preview.gif similarity index 100% rename from src/pages/editors/images/preview.gif rename to src/public/editors/images/preview.gif diff --git a/src/pages/editors/images/print.gif b/src/public/editors/images/print.gif similarity index 100% rename from src/pages/editors/images/print.gif rename to src/public/editors/images/print.gif diff --git a/src/pages/editors/images/printer.png b/src/public/editors/images/printer.png similarity index 100% rename from src/pages/editors/images/printer.png rename to src/public/editors/images/printer.png diff --git a/src/pages/editors/images/properties.gif b/src/public/editors/images/properties.gif similarity index 100% rename from src/pages/editors/images/properties.gif rename to src/public/editors/images/properties.gif diff --git a/src/pages/editors/images/rectangle.gif b/src/public/editors/images/rectangle.gif similarity index 100% rename from src/pages/editors/images/rectangle.gif rename to src/public/editors/images/rectangle.gif diff --git a/src/pages/editors/images/redo.gif b/src/public/editors/images/redo.gif similarity index 100% rename from src/pages/editors/images/redo.gif rename to src/public/editors/images/redo.gif diff --git a/src/pages/editors/images/refresh.gif b/src/public/editors/images/refresh.gif similarity index 100% rename from src/pages/editors/images/refresh.gif rename to src/public/editors/images/refresh.gif diff --git a/src/pages/editors/images/rhombus.gif b/src/public/editors/images/rhombus.gif similarity index 100% rename from src/pages/editors/images/rhombus.gif rename to src/public/editors/images/rhombus.gif diff --git a/src/pages/editors/images/right.gif b/src/public/editors/images/right.gif similarity index 100% rename from src/pages/editors/images/right.gif rename to src/public/editors/images/right.gif diff --git a/src/pages/editors/images/rounded.gif b/src/public/editors/images/rounded.gif similarity index 100% rename from src/pages/editors/images/rounded.gif rename to src/public/editors/images/rounded.gif diff --git a/src/pages/editors/images/save.gif b/src/public/editors/images/save.gif similarity index 100% rename from src/pages/editors/images/save.gif rename to src/public/editors/images/save.gif diff --git a/src/pages/editors/images/saveas.gif b/src/public/editors/images/saveas.gif similarity index 100% rename from src/pages/editors/images/saveas.gif rename to src/public/editors/images/saveas.gif diff --git a/src/pages/editors/images/script.gif b/src/public/editors/images/script.gif similarity index 100% rename from src/pages/editors/images/script.gif rename to src/public/editors/images/script.gif diff --git a/src/pages/editors/images/select.gif b/src/public/editors/images/select.gif similarity index 100% rename from src/pages/editors/images/select.gif rename to src/public/editors/images/select.gif diff --git a/src/pages/editors/images/server.png b/src/public/editors/images/server.png similarity index 100% rename from src/pages/editors/images/server.png rename to src/public/editors/images/server.png diff --git a/src/pages/editors/images/straight.gif b/src/public/editors/images/straight.gif similarity index 100% rename from src/pages/editors/images/straight.gif rename to src/public/editors/images/straight.gif diff --git a/src/pages/editors/images/swimlane.gif b/src/public/editors/images/swimlane.gif similarity index 100% rename from src/pages/editors/images/swimlane.gif rename to src/public/editors/images/swimlane.gif diff --git a/src/pages/editors/images/symbols/cancel_end.png b/src/public/editors/images/symbols/cancel_end.png similarity index 100% rename from src/pages/editors/images/symbols/cancel_end.png rename to src/public/editors/images/symbols/cancel_end.png diff --git a/src/pages/editors/images/symbols/cancel_intermediate.png b/src/public/editors/images/symbols/cancel_intermediate.png similarity index 100% rename from src/pages/editors/images/symbols/cancel_intermediate.png rename to src/public/editors/images/symbols/cancel_intermediate.png diff --git a/src/pages/editors/images/symbols/error.png b/src/public/editors/images/symbols/error.png similarity index 100% rename from src/pages/editors/images/symbols/error.png rename to src/public/editors/images/symbols/error.png diff --git a/src/pages/editors/images/symbols/event.png b/src/public/editors/images/symbols/event.png similarity index 100% rename from src/pages/editors/images/symbols/event.png rename to src/public/editors/images/symbols/event.png diff --git a/src/pages/editors/images/symbols/event_end.png b/src/public/editors/images/symbols/event_end.png similarity index 100% rename from src/pages/editors/images/symbols/event_end.png rename to src/public/editors/images/symbols/event_end.png diff --git a/src/pages/editors/images/symbols/event_intermediate.png b/src/public/editors/images/symbols/event_intermediate.png similarity index 100% rename from src/pages/editors/images/symbols/event_intermediate.png rename to src/public/editors/images/symbols/event_intermediate.png diff --git a/src/pages/editors/images/symbols/fork.png b/src/public/editors/images/symbols/fork.png similarity index 100% rename from src/pages/editors/images/symbols/fork.png rename to src/public/editors/images/symbols/fork.png diff --git a/src/pages/editors/images/symbols/inclusive.png b/src/public/editors/images/symbols/inclusive.png similarity index 100% rename from src/pages/editors/images/symbols/inclusive.png rename to src/public/editors/images/symbols/inclusive.png diff --git a/src/pages/editors/images/symbols/link.png b/src/public/editors/images/symbols/link.png similarity index 100% rename from src/pages/editors/images/symbols/link.png rename to src/public/editors/images/symbols/link.png diff --git a/src/pages/editors/images/symbols/merge.png b/src/public/editors/images/symbols/merge.png similarity index 100% rename from src/pages/editors/images/symbols/merge.png rename to src/public/editors/images/symbols/merge.png diff --git a/src/pages/editors/images/symbols/message.png b/src/public/editors/images/symbols/message.png similarity index 100% rename from src/pages/editors/images/symbols/message.png rename to src/public/editors/images/symbols/message.png diff --git a/src/pages/editors/images/symbols/message_end.png b/src/public/editors/images/symbols/message_end.png similarity index 100% rename from src/pages/editors/images/symbols/message_end.png rename to src/public/editors/images/symbols/message_end.png diff --git a/src/pages/editors/images/symbols/message_intermediate.png b/src/public/editors/images/symbols/message_intermediate.png similarity index 100% rename from src/pages/editors/images/symbols/message_intermediate.png rename to src/public/editors/images/symbols/message_intermediate.png diff --git a/src/pages/editors/images/symbols/multiple.png b/src/public/editors/images/symbols/multiple.png similarity index 100% rename from src/pages/editors/images/symbols/multiple.png rename to src/public/editors/images/symbols/multiple.png diff --git a/src/pages/editors/images/symbols/rule.png b/src/public/editors/images/symbols/rule.png similarity index 100% rename from src/pages/editors/images/symbols/rule.png rename to src/public/editors/images/symbols/rule.png diff --git a/src/pages/editors/images/symbols/small_cancel_end.gif b/src/public/editors/images/symbols/small_cancel_end.gif similarity index 100% rename from src/pages/editors/images/symbols/small_cancel_end.gif rename to src/public/editors/images/symbols/small_cancel_end.gif diff --git a/src/pages/editors/images/symbols/small_cancel_intermediate.gif b/src/public/editors/images/symbols/small_cancel_intermediate.gif similarity index 100% rename from src/pages/editors/images/symbols/small_cancel_intermediate.gif rename to src/public/editors/images/symbols/small_cancel_intermediate.gif diff --git a/src/pages/editors/images/symbols/small_error.gif b/src/public/editors/images/symbols/small_error.gif similarity index 100% rename from src/pages/editors/images/symbols/small_error.gif rename to src/public/editors/images/symbols/small_error.gif diff --git a/src/pages/editors/images/symbols/small_event.gif b/src/public/editors/images/symbols/small_event.gif similarity index 100% rename from src/pages/editors/images/symbols/small_event.gif rename to src/public/editors/images/symbols/small_event.gif diff --git a/src/pages/editors/images/symbols/small_event_end.gif b/src/public/editors/images/symbols/small_event_end.gif similarity index 100% rename from src/pages/editors/images/symbols/small_event_end.gif rename to src/public/editors/images/symbols/small_event_end.gif diff --git a/src/pages/editors/images/symbols/small_event_intermediate.gif b/src/public/editors/images/symbols/small_event_intermediate.gif similarity index 100% rename from src/pages/editors/images/symbols/small_event_intermediate.gif rename to src/public/editors/images/symbols/small_event_intermediate.gif diff --git a/src/pages/editors/images/symbols/small_fork.gif b/src/public/editors/images/symbols/small_fork.gif similarity index 100% rename from src/pages/editors/images/symbols/small_fork.gif rename to src/public/editors/images/symbols/small_fork.gif diff --git a/src/pages/editors/images/symbols/small_inclusive.gif b/src/public/editors/images/symbols/small_inclusive.gif similarity index 100% rename from src/pages/editors/images/symbols/small_inclusive.gif rename to src/public/editors/images/symbols/small_inclusive.gif diff --git a/src/pages/editors/images/symbols/small_link.gif b/src/public/editors/images/symbols/small_link.gif similarity index 100% rename from src/pages/editors/images/symbols/small_link.gif rename to src/public/editors/images/symbols/small_link.gif diff --git a/src/pages/editors/images/symbols/small_merge.gif b/src/public/editors/images/symbols/small_merge.gif similarity index 100% rename from src/pages/editors/images/symbols/small_merge.gif rename to src/public/editors/images/symbols/small_merge.gif diff --git a/src/pages/editors/images/symbols/small_message.gif b/src/public/editors/images/symbols/small_message.gif similarity index 100% rename from src/pages/editors/images/symbols/small_message.gif rename to src/public/editors/images/symbols/small_message.gif diff --git a/src/pages/editors/images/symbols/small_message_end.gif b/src/public/editors/images/symbols/small_message_end.gif similarity index 100% rename from src/pages/editors/images/symbols/small_message_end.gif rename to src/public/editors/images/symbols/small_message_end.gif diff --git a/src/pages/editors/images/symbols/small_message_intermediate.gif b/src/public/editors/images/symbols/small_message_intermediate.gif similarity index 100% rename from src/pages/editors/images/symbols/small_message_intermediate.gif rename to src/public/editors/images/symbols/small_message_intermediate.gif diff --git a/src/pages/editors/images/symbols/small_multiple.gif b/src/public/editors/images/symbols/small_multiple.gif similarity index 100% rename from src/pages/editors/images/symbols/small_multiple.gif rename to src/public/editors/images/symbols/small_multiple.gif diff --git a/src/pages/editors/images/symbols/small_rule.gif b/src/public/editors/images/symbols/small_rule.gif similarity index 100% rename from src/pages/editors/images/symbols/small_rule.gif rename to src/public/editors/images/symbols/small_rule.gif diff --git a/src/pages/editors/images/symbols/small_terminate.gif b/src/public/editors/images/symbols/small_terminate.gif similarity index 100% rename from src/pages/editors/images/symbols/small_terminate.gif rename to src/public/editors/images/symbols/small_terminate.gif diff --git a/src/pages/editors/images/symbols/small_timer.gif b/src/public/editors/images/symbols/small_timer.gif similarity index 100% rename from src/pages/editors/images/symbols/small_timer.gif rename to src/public/editors/images/symbols/small_timer.gif diff --git a/src/pages/editors/images/symbols/terminate.png b/src/public/editors/images/symbols/terminate.png similarity index 100% rename from src/pages/editors/images/symbols/terminate.png rename to src/public/editors/images/symbols/terminate.png diff --git a/src/pages/editors/images/symbols/timer.png b/src/public/editors/images/symbols/timer.png similarity index 100% rename from src/pages/editors/images/symbols/timer.png rename to src/public/editors/images/symbols/timer.png diff --git a/src/pages/editors/images/tasks.gif b/src/public/editors/images/tasks.gif similarity index 100% rename from src/pages/editors/images/tasks.gif rename to src/public/editors/images/tasks.gif diff --git a/src/pages/editors/images/text.gif b/src/public/editors/images/text.gif similarity index 100% rename from src/pages/editors/images/text.gif rename to src/public/editors/images/text.gif diff --git a/src/pages/editors/images/toback.gif b/src/public/editors/images/toback.gif similarity index 100% rename from src/pages/editors/images/toback.gif rename to src/public/editors/images/toback.gif diff --git a/src/pages/editors/images/tofront.gif b/src/public/editors/images/tofront.gif similarity index 100% rename from src/pages/editors/images/tofront.gif rename to src/public/editors/images/tofront.gif diff --git a/src/pages/editors/images/toolbar.gif b/src/public/editors/images/toolbar.gif similarity index 100% rename from src/pages/editors/images/toolbar.gif rename to src/public/editors/images/toolbar.gif diff --git a/src/pages/editors/images/top.gif b/src/public/editors/images/top.gif similarity index 100% rename from src/pages/editors/images/top.gif rename to src/public/editors/images/top.gif diff --git a/src/pages/editors/images/tree.gif b/src/public/editors/images/tree.gif similarity index 100% rename from src/pages/editors/images/tree.gif rename to src/public/editors/images/tree.gif diff --git a/src/pages/editors/images/triangle.gif b/src/public/editors/images/triangle.gif similarity index 100% rename from src/pages/editors/images/triangle.gif rename to src/public/editors/images/triangle.gif diff --git a/src/pages/editors/images/underline.gif b/src/public/editors/images/underline.gif similarity index 100% rename from src/pages/editors/images/underline.gif rename to src/public/editors/images/underline.gif diff --git a/src/pages/editors/images/undo.gif b/src/public/editors/images/undo.gif similarity index 100% rename from src/pages/editors/images/undo.gif rename to src/public/editors/images/undo.gif diff --git a/src/pages/editors/images/ungroup.gif b/src/public/editors/images/ungroup.gif similarity index 100% rename from src/pages/editors/images/ungroup.gif rename to src/public/editors/images/ungroup.gif diff --git a/src/pages/editors/images/up.gif b/src/public/editors/images/up.gif similarity index 100% rename from src/pages/editors/images/up.gif rename to src/public/editors/images/up.gif diff --git a/src/pages/editors/images/vertical.gif b/src/public/editors/images/vertical.gif similarity index 100% rename from src/pages/editors/images/vertical.gif rename to src/public/editors/images/vertical.gif diff --git a/src/pages/editors/images/workplace.png b/src/public/editors/images/workplace.png similarity index 100% rename from src/pages/editors/images/workplace.png rename to src/public/editors/images/workplace.png diff --git a/src/pages/editors/images/wrench.png b/src/public/editors/images/wrench.png similarity index 100% rename from src/pages/editors/images/wrench.png rename to src/public/editors/images/wrench.png diff --git a/src/pages/editors/images/zoom.gif b/src/public/editors/images/zoom.gif similarity index 100% rename from src/pages/editors/images/zoom.gif rename to src/public/editors/images/zoom.gif diff --git a/src/pages/editors/images/zoomactual.gif b/src/public/editors/images/zoomactual.gif similarity index 100% rename from src/pages/editors/images/zoomactual.gif rename to src/public/editors/images/zoomactual.gif diff --git a/src/pages/editors/images/zoomin.gif b/src/public/editors/images/zoomin.gif similarity index 100% rename from src/pages/editors/images/zoomin.gif rename to src/public/editors/images/zoomin.gif diff --git a/src/pages/editors/images/zoomout.gif b/src/public/editors/images/zoomout.gif similarity index 100% rename from src/pages/editors/images/zoomout.gif rename to src/public/editors/images/zoomout.gif diff --git a/src/pages/editors/js/app.js b/src/public/editors/js/app.js similarity index 100% rename from src/pages/editors/js/app.js rename to src/public/editors/js/app.js diff --git a/src/pages/editors/layouteditor.html b/src/public/editors/layouteditor.html similarity index 100% rename from src/pages/editors/layouteditor.html rename to src/public/editors/layouteditor.html diff --git a/src/pages/editors/processeditor.html b/src/public/editors/processeditor.html similarity index 100% rename from src/pages/editors/processeditor.html rename to src/public/editors/processeditor.html diff --git a/src/pages/editors/resources/app.txt b/src/public/editors/resources/app.txt similarity index 100% rename from src/pages/editors/resources/app.txt rename to src/public/editors/resources/app.txt diff --git a/src/pages/editors/resources/app_de.txt b/src/public/editors/resources/app_de.txt similarity index 100% rename from src/pages/editors/resources/app_de.txt rename to src/public/editors/resources/app_de.txt diff --git a/src/pages/editors/resources/app_zh.txt b/src/public/editors/resources/app_zh.txt similarity index 100% rename from src/pages/editors/resources/app_zh.txt rename to src/public/editors/resources/app_zh.txt diff --git a/src/pages/editors/workfloweditor.html b/src/public/editors/workfloweditor.html similarity index 100% rename from src/pages/editors/workfloweditor.html rename to src/public/editors/workfloweditor.html diff --git a/src/pages/map-background/images/layers-2x.png b/src/public/map-background/images/layers-2x.png similarity index 100% rename from src/pages/map-background/images/layers-2x.png rename to src/public/map-background/images/layers-2x.png diff --git a/src/pages/map-background/images/layers.png b/src/public/map-background/images/layers.png similarity index 100% rename from src/pages/map-background/images/layers.png rename to src/public/map-background/images/layers.png diff --git a/src/pages/map-background/images/marker-icon-2x.png b/src/public/map-background/images/marker-icon-2x.png similarity index 100% rename from src/pages/map-background/images/marker-icon-2x.png rename to src/public/map-background/images/marker-icon-2x.png diff --git a/src/pages/map-background/images/marker-icon.png b/src/public/map-background/images/marker-icon.png similarity index 100% rename from src/pages/map-background/images/marker-icon.png rename to src/public/map-background/images/marker-icon.png diff --git a/src/pages/map-background/images/marker-shadow.png b/src/public/map-background/images/marker-shadow.png similarity index 100% rename from src/pages/map-background/images/marker-shadow.png rename to src/public/map-background/images/marker-shadow.png diff --git a/src/pages/map-background/leaflet-src.js b/src/public/map-background/leaflet-src.js similarity index 100% rename from src/pages/map-background/leaflet-src.js rename to src/public/map-background/leaflet-src.js diff --git a/src/pages/map-background/leaflet.css b/src/public/map-background/leaflet.css similarity index 100% rename from src/pages/map-background/leaflet.css rename to src/public/map-background/leaflet.css diff --git a/src/pages/map-background/leaflet.js b/src/public/map-background/leaflet.js similarity index 100% rename from src/pages/map-background/leaflet.js rename to src/public/map-background/leaflet.js diff --git a/src/pages/map-background/map-background.html b/src/public/map-background/map-background.html similarity index 100% rename from src/pages/map-background/map-background.html rename to src/public/map-background/map-background.html