From af7bdab90a3c497836cc041e72bbb0a497b575d8 Mon Sep 17 00:00:00 2001
From: David Benson
Date: Thu, 3 Aug 2017 16:55:52 +0100
Subject: [PATCH] 7.0.0 release
---
ChangeLog | 6 +
VERSION | 2 +-
.../importer/GliffyDiagramConverter.java | 23 +-
.../io/gliffy/importer/StencilTranslator.java | 7 +-
.../importer/gliffyTranslation.properties | 86 +-
.../mxgraph/io/gliffy/model/GliffyObject.java | 20 +-
war/cache.manifest | 2 +-
war/js/app.min.js | 84 +-
war/js/atlas-viewer.min.js | 44 +-
war/js/atlas.min.js | 211 +-
war/js/diagramly/Extensions.js | 1951 +++++++++--------
war/js/embed-static.min.js | 32 +-
war/js/extensions.min.js | 127 +-
war/js/mxgraph/Shapes.js | 9 +-
war/js/reader.min.js | 32 +-
war/js/viewer.min.js | 44 +-
16 files changed, 1446 insertions(+), 1234 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 22e541ad..60f27552 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+03-AUG-2017: 7.0.0
+
+- Improvements to Gliffy import
+- Improvements to Lucidchart import
+- Sent semantic versioning on holiday
+
02-AUG-2017: 6.9.9
- Fixes paste from Lucidchart
diff --git a/VERSION b/VERSION
index da7c4ecc..41225218 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-6.9.9
\ No newline at end of file
+7.0.0
\ No newline at end of file
diff --git a/src/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java b/src/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java
index 6557aa9e..ab712537 100644
--- a/src/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java
+++ b/src/com/mxgraph/io/gliffy/importer/GliffyDiagramConverter.java
@@ -345,17 +345,18 @@ public class GliffyDiagramConverter
GliffyObject textObject = null;
String link = null;
- Graphic graphic = null;
+ Graphic graphic = gliffyObject.getGraphic();
+ String mxShapeName = StencilTranslator.translate(gliffyObject.uid, graphic != null && graphic.getShape() != null ? graphic.getShape().tid : null);
if (gliffyObject.isGroup())
{
- style.append("group;");
+ if (graphic == null || mxShapeName == null)
+ style.append("group;");
+
cell.setVertex(true);
}
else
{
- // groups don't have graphic
- graphic = gliffyObject.getGraphic();
textObject = gliffyObject.getTextObject();
}
@@ -368,8 +369,12 @@ public class GliffyDiagramConverter
GliffyShape shape = graphic.Shape;
cell.setVertex(true);
- style.append("shape=" + StencilTranslator.translate(gliffyObject.uid)).append(";");
- style.append("shadow=" + (shape.dropShadow ? 1 : 0)).append(";");
+
+ if (mxShapeName != null)
+ style.append("shape=").append(mxShapeName).append(";");
+
+ if(style.lastIndexOf("shadow=") == -1)
+ style.append("shadow=" + (shape.dropShadow ? 1 : 0)).append(";");
if(style.lastIndexOf("strokeWidth") == -1)
{
@@ -463,7 +468,7 @@ public class GliffyDiagramConverter
{
GliffyImage image = graphic.getImage();
cell.setVertex(true);
- style.append("shape=" + StencilTranslator.translate(gliffyObject.uid)).append(";");
+ style.append("shape=" + StencilTranslator.translate(gliffyObject.uid, null)).append(";");
style.append("image=" + image.getUrl()).append(";");
}
else if (gliffyObject.isSvg())
@@ -480,7 +485,7 @@ public class GliffyDiagramConverter
else if (gliffyObject.isSwimlane())
{
cell.setVertex(true);
- style.append(StencilTranslator.translate(gliffyObject.uid)).append(";");
+ style.append(StencilTranslator.translate(gliffyObject.uid, null)).append(";");
GliffyObject header = gliffyObject.children.get(0);// first child is the header of the swimlane
@@ -535,7 +540,7 @@ public class GliffyDiagramConverter
GliffyMindmap mindmap = rectangle.graphic.Mindmap;
- style.append("shape=" + StencilTranslator.translate(gliffyObject.uid)).append(";");
+ style.append("shape=" + StencilTranslator.translate(gliffyObject.uid, null)).append(";");
style.append("shadow=" + (mindmap.dropShadow ? 1 : 0)).append(";");
style.append("strokeWidth=" + mindmap.strokeWidth).append(";");
style.append("fillColor=" + mindmap.fillColor).append(";");
diff --git a/src/com/mxgraph/io/gliffy/importer/StencilTranslator.java b/src/com/mxgraph/io/gliffy/importer/StencilTranslator.java
index b78dc325..0694ea99 100644
--- a/src/com/mxgraph/io/gliffy/importer/StencilTranslator.java
+++ b/src/com/mxgraph/io/gliffy/importer/StencilTranslator.java
@@ -27,10 +27,15 @@ public class StencilTranslator
}
}
- public static String translate(String gliffyShapeKey)
+ public static String translate(String gliffyShapeKey, String tid)
{
String shape = translationTable.get(gliffyShapeKey);
+
+ if (shape == null && tid != null)
+ shape = translationTable.get(tid);
+
logger.info(gliffyShapeKey + " -> " + shape);
+
return shape;
}
}
diff --git a/src/com/mxgraph/io/gliffy/importer/gliffyTranslation.properties b/src/com/mxgraph/io/gliffy/importer/gliffyTranslation.properties
index 70575409..0f7ab988 100644
--- a/src/com/mxgraph/io/gliffy/importer/gliffyTranslation.properties
+++ b/src/com/mxgraph/io/gliffy/importer/gliffyTranslation.properties
@@ -103,16 +103,16 @@ com.gliffy.shape.swimlanes.swimlanes_v1.default.horizontal_four_lane_pool=swimla
# UML v2
#
# UML V2 CLASS
-com.gliffy.shape.uml.uml_v2.class.object=verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
-com.gliffy.shape.uml.uml_v2.class.data_type=verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
-com.gliffy.shape.uml.uml_v2.class.enumeration=verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
-com.gliffy.shape.uml.uml_v2.class.interface=verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
-com.gliffy.shape.uml.uml_v2.class.class2=verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
-com.gliffy.shape.uml.uml_v2.class.class=verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
-com.gliffy.shape.uml.uml_v2.class.package=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left
+com.gliffy.shape.uml.uml_v2.class.object=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
+com.gliffy.shape.uml.uml_v2.class.data_type=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
+com.gliffy.shape.uml.uml_v2.class.enumeration=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
+com.gliffy.shape.uml.uml_v2.class.interface=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
+com.gliffy.shape.uml.uml_v2.class.class2=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
+com.gliffy.shape.uml.uml_v2.class.class=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
+com.gliffy.shape.uml.uml_v2.class.package=rect;strokeColor=none;shadow=0;fillColor=none
com.gliffy.shape.uml.uml_v2.class.simple_class=rect
com.gliffy.shape.uml.uml_v2.class.primitive=rect
-com.gliffy.shape.uml.uml_v2.class.stereotype=verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
+com.gliffy.shape.uml.uml_v2.class.stereotype=rect
com.gliffy.shape.uml.uml_v2.class.generalization=endArrow=block;endFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=top;endSize=12
com.gliffy.shape.uml.uml_v2.class.implements=endArrow=block;endFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=top;dashed=1;endSize=12
com.gliffy.shape.uml.uml_v2.class.association=endArrow=none;edgeStyle=orthogonalEdgeStyle
@@ -130,10 +130,10 @@ com.gliffy.shape.uml.uml_v2.class.note=note;size=10
com.gliffy.shape.uml.uml_v2.class.anchor_line=endArrow=none;endSize=12;dashed=1
# UML v1
com.gliffy.shape.uml.uml_v1.default.package=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left
-com.gliffy.shape.uml.uml_v1.default.class=verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
+com.gliffy.shape.uml.uml_v1.default.class=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
com.gliffy.shape.uml.uml_v1.default.simple_class=rect
com.gliffy.shape.uml.uml_v1.default.note=note;size=10
-com.gliffy.shape.uml.uml_v1.default.object=verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
+com.gliffy.shape.uml.uml_v1.default.object=rect;verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica
com.gliffy.shape.uml.uml_v1.default.interface=ellipse
com.gliffy.shape.uml.uml_v1.default.node=cube;size=10;direction=south
com.gliffy.shape.uml.uml_v1.default.component=component;align=left;spacingLeft=36
@@ -151,19 +151,19 @@ com.gliffy.shape.uml.uml_v1.default.self_message=curved=1
com.gliffy.shape.uml.uml_v1.default.actor=umlActor;verticalLabelPosition=bottom;verticalAlign=bottom
com.gliffy.shape.uml.uml_v1.default.use_case=ellipse
# UML v2 SEQUENCE
-com.gliffy.shape.uml.uml_v2.sequence.frame=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill
-com.gliffy.shape.uml.uml_v2.sequence.interaction_use=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill
-com.gliffy.shape.uml.uml_v2.sequence.opt_combined_fragment=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill
-com.gliffy.shape.uml.uml_v2.sequence.loop_combined_fragment=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill
-com.gliffy.shape.uml.uml_v2.sequence.alt_combined_fragment=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill
+com.gliffy.shape.uml.uml_v2.sequence.frame=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill;labelX=26
+com.gliffy.shape.uml.uml_v2.sequence.interaction_use=stencil(rVNbDsIgEDwN/wjxAMbHPWi7taQIDWCtt5dmsVI0aqw/hBkmwyy7EL51jeiAMNoQviOMrSgNa8CXDAvXQemR7IWVolCAJ85b08JFVj56SN2AlX485XtCN4RvC1G2R2vOuiLsMLG1sRDZO9WJ0SWCk+nHaAPaxiDXFD28lNSJli8Qr9hbdZaDrd+qF4jz0KUyDlIi7GfPVUulsBmp6k8vOg3CT+o7/q7yZ/XH2p/r9jB4nE40tVDjJcOszVnXqVDyqJEqQXuwSPcJf5JVFYd/FujFOAcWPxjf3wA=);xSize=90;align=left;spacingLeft=10;overflow=fill
+com.gliffy.shape.uml.uml_v2.sequence.opt_combined_fragment=stencil(rVPREoIgEPwa3gmmD2jM/gP1TEYCB0nt78M5MtSmmuyFYZedZY87CE/aSjRAGK0IPxLGdpT61eN+gUXbQO6Q7ISVIlOAJ62zpoZeFi54SF2BlW485SmhB8KTTOT12ZqrLgg7TWxpLAT2QTVidAngYrox2oC2IcgtRk8vJXWk5RvEO/ZWvcjB9m/VG8TL0LkyLcSE38+eq5RKYTNi1Z9edBqEn9QP/F3la/XH2td1OxgcTieamsbhJcOszYuuU6HkWSOVg3Zgke4i/iKLIgz/LNCLcfYsfjCe3gE=);xSize=90;align=left;spacingLeft=10;overflow=fill
+com.gliffy.shape.uml.uml_v2.sequence.loop_combined_fragment=stencil(rVNbDoMgEDwN/xTSAzStvQeFVYkUDFJtb1/NokX7jOkPYYbJMLsshO+bUtRAGC0JPxDGNpT2a4+7BRZNDTIg2QqvxckAnjTBuwo6rUL00LYEr8NwyjNCd4TvT0JWhXcXqwg7TmzuPER2pGoxuERwdu0Q7Yq2McgtRQ8vo22i5dv14g37qGZzdYTv1HS9eBlaGtdASvT7WbtybQw+Rqr6U0enQVilHvFvlT+rv9b+XHeAa8DpRFPjXI23jBlfPjsVRhcWKQk2gEe6TfizVipO/yzRi3nuWfxhPLsD);xSize=90;align=left;spacingLeft=10;overflow=fill
+com.gliffy.shape.uml.uml_v2.sequence.alt_combined_fragment=stencil(rVNbDsIgEDwN/wjxAMbHPWi7WlKEBrCtt5dmsVI0aqw/hBkmwyy7EL51tWiBMFoTviOMrSgNa8B9hoVrofRIdsJKUSjAE+etaaCXlY8eUtdgpR9P+Z7QDeHbQpTNyZqLrgg7TOzRWIjsnWrF6BLB2XRjtAFtY5Brih5eSupEyxeIV+ytOsvB1m/VC8R56FIZBykR9rPnOkqlsBmp6k8vOg3CT+o7/q7yZ/XH2p/r9jB4nE40FcrjJcOszVnXqVDypJEqQXuwSHcJf5ZVFYd/FujFOAcWPxjf3wA=);xSize=90;align=left;spacingLeft=10;overflow=fill
com.gliffy.shape.basic.basic_v1.default.line=edgeStyle=none;endArrow=none
#composite
-com.gliffy.shape.uml.uml_v2.sequence.entity_lifeline=umlEntity
+com.gliffy.shape.uml.uml_v2.sequence.entity_lifeline=rect;fillColor=none;strokeColor=none
#composite
-com.gliffy.shape.uml.uml_v2.sequence.control_lifeline=umlControl
+com.gliffy.shape.uml.uml_v2.sequence.control_lifeline=rect;fillColor=none;strokeColor=none
#composite
-com.gliffy.shape.uml.uml_v2.sequence.boundary_lifeline=umlBoundary
-com.gliffy.shape.uml.uml_v2.sequence.lifeline=umlLifeline;perimeter=lifelinePerimeter
+com.gliffy.shape.uml.uml_v2.sequence.boundary_lifeline=rect;fillColor=none;strokeColor=none
+com.gliffy.shape.uml.uml_v2.sequence.lifeline=rect;fillColor=none;strokeColor=none
com.gliffy.shape.uml.uml_v2.sequence.activation=rect
com.gliffy.shape.uml.uml_v2.sequence.destruction=mxgraph.sysml.x
com.gliffy.shape.uml.uml_v2.sequence.init_message=endArrow=open;endSize=12;startArrow=none;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;dashed=1
@@ -173,7 +173,7 @@ com.gliffy.shape.uml.uml_v2.sequence.async_message=endArrow=open;endSize=12;star
com.gliffy.shape.uml.uml_v2.sequence.return_message=endArrow=none;startSize=12;startArrow=open;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;dashed=1
com.gliffy.shape.uml.uml_v2.sequence.self_message=curved=1
com.gliffy.shape.uml.uml_v2.sequence.actor=umlActor;verticalLabelPosition=bottom;verticalAlign=top
-#com.gliffy.shape.uml.uml_v2.sequence.concurrent=
+com.gliffy.shape.uml.uml_v2.sequence.concurrent=stencil(nZFNDsIgEIVPwx6ZjS4NtveYtkRIKxDAVm8vP5qA3RgTNrw330zmDQHuJVpBGEVvxRgIXAhjKzqFwxJlFh0fnJnFpqYgi620FE6F5EJH6JkAH3Ccr87c9fSW6Ck94BYTVUlZvZk1zXyUfrTMeda/fg8tSlfQgbbYv9zxR66lPl36r3WjUm0c083ZNXW5aJdXVsstoHsB);dashed=1
com.gliffy.shape.uml.uml_v2.sequence.continuation=rect;rounded=1
com.gliffy.shape.uml.uml_v2.sequence.gate=rect
com.gliffy.shape.uml.uml_v2.sequence.constraint=edgeStyle=none;endArrow=none;dashed=1
@@ -195,19 +195,19 @@ com.gliffy.shape.uml.uml_v2.activity.jump_node=ellipse
com.gliffy.shape.uml.uml_v2.activity.control_flow=edgeStyle=none;endArrow=open;endSize=12
com.gliffy.shape.uml.uml_v2.activity.object_flow=edgeStyle=none;endArrow=open;dashed=1;endSize=12
#com.gliffy.shape.uml.uml_v2.activity.exception_flow=
-com.gliffy.shape.uml.uml_v2.activity.frame=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill
+com.gliffy.shape.uml.uml_v2.activity.frame=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill;labelX=32
com.gliffy.shape.uml.uml_v2.activity.object_node=rect
-com.gliffy.shape.uml.uml_v2.activity.structured_node=rounded=1;dashed=1
-com.gliffy.shape.uml.uml_v2.activity.region=rounded=1;dashed=1
+com.gliffy.shape.uml.uml_v2.activity.structured_node=rect;rounded=1;dashed=1
+com.gliffy.shape.uml.uml_v2.activity.region=rect;rounded=1;dashed=1
com.gliffy.shape.uml.uml_v2.activity.note=note;size=10
com.gliffy.shape.uml.uml_v2.activity.anchor_line=edgeStyle=none;endArrow=none;dashed=1
# UML v2 STATE MACHINE
-com.gliffy.shape.uml.uml_v2.state_machine.frame=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill
-com.gliffy.shape.uml.uml_v2.state_machine.orthoganal_state=swimlane;rounded=1;startSize=30;arcSize=10
-com.gliffy.shape.uml.uml_v2.state_machine.composite_state=swimlane;rounded=1;startSize=30;arcSize=10
+com.gliffy.shape.uml.uml_v2.state_machine.frame=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill;labelX=32
+com.gliffy.shape.uml.uml_v2.state_machine.orthoganal_state=rect;rounded=1;startSize=30;arcSize=10
+com.gliffy.shape.uml.uml_v2.state_machine.composite_state=rect;rounded=1;startSize=30;arcSize=10
com.gliffy.shape.uml.uml_v2.state_machine.state=rect;rounded=1
# temporary
-com.gliffy.shape.uml.uml_v2.state_machine.submachine_state=rect;rounded=1
+com.gliffy.shape.uml.uml_v2.state_machine.submachine_state=ext;symbol0=ellipse;symbol0Width=10;symbol0Height=10;symbol0Align=right;symbol0VerticalAlign=bottom;symbol0Spacing=5;symbol0VSpacing=5;symbol1=ellipse;symbol1Width=10;symbol1Height=10;symbol1Align=right;symbol1VerticalAlign=bottom;symbol1Spacing=25;symbol1VSpacing=5;symbol2=line;symbol2Width=10;symbol2Height=10;symbol2Align=right;symbol2VerticalAlign=bottom;symbol2Spacing=15;symbol2VSpacing=5;rounded=1;arcSize=10
com.gliffy.shape.uml.uml_v2.state_machine.final_state=mxgraph.bpmn.shape;verticalLabelPosition=bottom;verticalAlign=top;perimeter=ellipsePerimeter;outline=end;symbol=terminate
com.gliffy.shape.uml.uml_v2.state_machine.initial_state=ellipse
com.gliffy.shape.uml.uml_v2.state_machine.entry_point=ellipse
@@ -231,8 +231,8 @@ com.gliffy.shape.uml.uml_v2.deployment.artifact=note;size=10
com.gliffy.shape.uml.uml_v2.deployment.component1=component;align=left;spacingLeft=36
com.gliffy.shape.uml.uml_v2.deployment.component2=ext;symbol0=component;symbol0Width=20;symbol0Height=20;symbol0Align=right;symbol0VerticalAlign=top;symbol0Spacing=4;symbol0ArcSpacing=0.25;jettyWidth=8;jettyHeight=4;overflow=fill
com.gliffy.shape.uml.uml_v2.deployment.interface=ellipse
-#com.gliffy.shape.uml.uml_v2.deployment.simple_interface=
-#com.gliffy.shape.uml.uml_v2.deployment.required_interface=
+com.gliffy.shape.uml.uml_v2.deployment.simple_interface=stencil(bVHRDsIgDPwaHpewERN9NFP/o5s4yHCQgm7+vWydBqYJL3dXer2WidorcJJVHLyTbWDixKrqCaihMZGuouID2l6O+hoUyXpQEnWYVXFm/MhE3UDbd2gfw3Wl+GF+onYw/0qohb3b5+w5Ub8dJ6MXwZITvny7A7ZRxk85VeMrg/97rWgqYNK+QBsgaDtkmgHsZBEtipuBLpP8KKVL6DKbK0kZySRoXOqysjSCNEY7n4Qut6EJjgT3K1Q5TDvetDFbHxppmefnIgtL1xbnNw==)
+com.gliffy.shape.uml.uml_v2.deployment.required_interface=stencil(bZDNDoMgEISfhiMJQnrosbH2PValSrRCFurP25cfbSRtwmW+GXZhiChtD0YSzsAa2Tgi7oTzGVBBPXrMvWMd6kEuqnV9stXUS1QuuKIi7EZEWUMzdKjfU7sjdg1HlAbCrROK9KXnsHNN8y4sLdqSLFjSj+90wMbbeMRTGrdM/p+1q5XCqixF7cApPWXeCNhJ6lfQ5whdZtlFSnPCRfau4zOenH7pG419ZbkY+uko0tS/qD4=)
com.gliffy.shape.uml.uml_v2.deployment.port=rect;verticalLabelPosition=bottom;verticalAlign=top
com.gliffy.shape.uml.uml_v2.deployment.instance=rect
com.gliffy.shape.uml.uml_v2.deployment.instance_specification=ext;symbol0=note;symbol0Width=20;symbol0Height=20;symbol0Align=right;symbol0VerticalAlign=top;symbol0Spacing=4;symbol0ArcSpacing=0.25;jettyWidth=8;jettyHeight=4;overflow=fill;align=center;verticalAlign=bottom;size=5
@@ -268,7 +268,7 @@ com.gliffy.shape.uml.uml_v2.use_case.use_case=ellipse
com.gliffy.shape.uml.uml_v2.use_case.actor=umlActor;verticalLabelPosition=bottom;verticalAlign=bottom
com.gliffy.shape.uml.uml_v2.use_case.association=edgeStyle=none
com.gliffy.shape.uml.uml_v2.use_case.system=rect
-com.gliffy.shape.uml.uml_v2.use_case.frame=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill
+com.gliffy.shape.uml.uml_v2.use_case.frame=mxgraph.sysml.package;xSize=90;align=left;spacingLeft=10;overflow=fill;labelX=26
com.gliffy.shape.uml.uml_v2.use_case.include=edgeStyle=none;dashed=1
com.gliffy.shape.uml.uml_v2.use_case.extend=edgeStyle=none;dashed=1
com.gliffy.shape.uml.uml_v2.use_case.dependency=edgeStyle=none;dashed=1
@@ -303,7 +303,7 @@ com.gliffy.shape.erd.erd_v1.default.many_optional_many_mandatory=edgeStyle=ortho
# BPMN v1
#
# BPMN v1 EVENTS
-com.gliffy.shape.bpmn.bpmn_v1.events.general_start=mxgraph.bpmn.shape;perimeter=ellipsePerimeter;outline=standard;symbol=general
+com.gliffy.shape.bpmn.bpmn_v1.events.general_start=mxgraph.bpmn.shape;perimeter=ellipsePerimeter;outline=standard;symbol=general;strokeWidth=1
com.gliffy.shape.bpmn.bpmn_v1.events.general_intermediate=mxgraph.bpmn.shape;perimeter=ellipsePerimeter;outline=throwing;symbol=general
com.gliffy.shape.bpmn.bpmn_v1.events.general_end=mxgraph.bpmn.shape;perimeter=ellipsePerimeter;outline=end;symbol=general
com.gliffy.shape.bpmn.bpmn_v1.events.message_start=mxgraph.bpmn.shape;perimeter=ellipsePerimeter;outline=standard;symbol=message
@@ -330,7 +330,7 @@ com.gliffy.shape.bpmn.bpmn_v1.events.multiple_end=mxgraph.bpmn.shape;perimeter=e
com.gliffy.shape.bpmn.bpmn_v1.activities.multiple_instances=mxgraph.ios7.icons.pause;fillColor=#000000
com.gliffy.shape.bpmn.bpmn_v1.activities.compensation=mxgraph.bpmn.compensation;html=1;fillColor=#000000;verticalLabelPosition=bottom;verticalAlign=top
com.gliffy.shape.bpmn.bpmn_v1.activities.ad_hoc=mxgraph.bpmn.ad_hoc;fillColor=#000000;verticalLabelPosition=bottom;verticalAlign=top
-com.gliffy.shape.bpmn.bpmn_v1.activities.looping=mxgraph.bpmn.loop;verticalLabelPosition=bottom;verticalAlign=top
+com.gliffy.shape.bpmn.bpmn_v1.activities.looping=mxgraph.bpmn.loop;verticalLabelPosition=bottom;verticalAlign=top;strokeWidth=5
com.gliffy.shape.bpmn.bpmn_v1.activities.process=ext;rounded=1
com.gliffy.shape.bpmn.bpmn_v1.activities.transaction=ext;rounded=1;double=1
com.gliffy.shape.bpmn.bpmn_v1.activities.expanded_sub_process=ext;rounded=1
@@ -1309,10 +1309,10 @@ com.gliffy.shape.ui.ui_v3.containers_content.graph_line=mxgraph.mockup.graphics.
com.gliffy.shape.ui.ui_v3.containers_content.transparent_rect=rect
com.gliffy.shape.ui.ui_v3.containers_content.map=mxgraph.mockup.misc.map
com.gliffy.shape.ui.ui_v3.containers_content.graph_pie=mxgraph.mockup.graphics.pieChart;strokeColor=#008cff;parts=10,20,35;partColors=#e0e0e0,#d0d0d0,#c0c0c0,#b0b0b0,#a0a0a0
-com.gliffy.shape.ui.ui_v3.containers_content.note=rect
+com.gliffy.shape.ui.ui_v3.containers_content.note=rect;fillColor=#fff0ab;strokeColor=none;gradientColor=#ffe77c;shadow=1
#com.gliffy.shape.ui.ui_v3.containers_content.table_three_by_three=
# UI v3 TABLES
-#needs custom code
+#Treated as groups
#com.gliffy.shape.table.table_v2.default.table_horizontal_and_vertical_title_three_by_two=
#com.gliffy.shape.table.table_v2.default.table_horizontal_title_three_by_two=
#com.gliffy.shape.table.table_v2.default.table_three_by_three=
@@ -1564,4 +1564,20 @@ com.gliffy.shape.floorplan.floorplan_v2.miscellaneous.piano=mxgraph.floorplan.pi
#
com.gliffy.shape.mindmap.mindmap_v1.default.main_topic=rect;rounded=1
com.gliffy.shape.mindmap.mindmap_v1.default.subtopic=rect;rounded=1
-com.gliffy.shape.mindmap.mindmap_v1.default.child_node=rect;rounded=1;dashed=1
\ No newline at end of file
+com.gliffy.shape.mindmap.mindmap_v1.default.child_node=rect;rounded=1;dashed=1
+
+#
+# Child shape TID
+#
+com.gliffy.stencil.alt_combined_fragment.alt_area_v1=rect;shadow=0;fillColor=none;strokeColor=none;opacity=0
+com.gliffy.stencil.loop_combined_fragment.uml_v2=rect;shadow=0;fillColor=none;strokeColor=none;opacity=0
+com.gliffy.stencil.opt_combined_fragment.uml_v2=rect;shadow=0;fillColor=none;strokeColor=none;opacity=0
+com.gliffy.stencil.interaction_use.uml_v2=rect;shadow=0;fillColor=none;strokeColor=none;opacity=0
+com.gliffy.stencil.rectangle.no_fill_no_line_v1=rect;fillColor=none;strokeColor=none
+com.gliffy.stencil.alt_combined_fragment.dotted_line_area_v1=partialRectangle;top=0;right=0;left=0;fillColor=none;dashed=1;dashPattern=10 4;shadow=0
+com.gliffy.stencil.rectangle.no_fill_line_bottom_v1=partialRectangle;top=0;right=0;left=0;fillColor=none
+com.gliffy.stencil.rectangle.no_fill_line_bottom_dashed_v1=partialRectangle;top=0;right=0;left=0;fillColor=none;dashed=1;dashPattern=10 4;shadow=0
+com.gliffy.stencil.boundary_lifeline.uml_v2=umlBoundary
+com.gliffy.stencil.object_timeline.uml_v1=line;direction=south;dashed=1
+com.gliffy.stencil.control_lifeline.uml_v2=umlControl
+com.gliffy.stencil.entity_lifeline.uml_v2=umlEntity
\ No newline at end of file
diff --git a/src/com/mxgraph/io/gliffy/model/GliffyObject.java b/src/com/mxgraph/io/gliffy/model/GliffyObject.java
index b51d3d56..938025c6 100644
--- a/src/com/mxgraph/io/gliffy/model/GliffyObject.java
+++ b/src/com/mxgraph/io/gliffy/model/GliffyObject.java
@@ -114,11 +114,10 @@ public class GliffyObject implements PostDeserializable
GROUP_SHAPES.add("com.gliffy.shape.basic.basic_v1.default.group");
GROUP_SHAPES.add("com.gliffy.shape.erd.erd_v1.default.entity_with_attributes");
GROUP_SHAPES.add("com.gliffy.shape.erd.erd_v1.default.entity_with_multiple_attributes");
-// GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.frame");//
-// GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.interaction_use");//
-// GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.opt_combined_fragment");//
-// GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.loop_combined_fragment");//
-// GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.alt_combined_fragment");//
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.interaction_use");
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.opt_combined_fragment");
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.loop_combined_fragment");
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.alt_combined_fragment");
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.class.object");
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.class.enumeration");
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.class.interface");
@@ -127,8 +126,11 @@ public class GliffyObject implements PostDeserializable
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.class.data_type");
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.state_machine.composite_state");
GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.state_machine.orthoganal_state");
- //GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.use_case.frame");//???
- //GROUP_SHAPES.add("");
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.class.package");
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.boundary_lifeline");
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.lifeline");
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.entity_lifeline");
+ GROUP_SHAPES.add("com.gliffy.shape.uml.uml_v2.sequence.control_lifeline");
MINDMAP_SHAPES.add("com.gliffy.shape.mindmap.mindmap_v1.default.main_topic");
MINDMAP_SHAPES.add("com.gliffy.shape.mindmap.mindmap_v1.default.subtopic");
@@ -215,7 +217,9 @@ public class GliffyObject implements PostDeserializable
public boolean isGroup()
{
- return uid != null && GROUP_SHAPES.contains(uid);
+ return (uid != null && (GROUP_SHAPES.contains(uid) || uid.startsWith("com.gliffy.shape.table")))
+ //Since we treat text in a different way (added as cell value instead of another child cell, this is probably the best way to detect groups when uid is null)
+ || (uid == null && hasChildren() && !children.get(0).isText());
}
public boolean isMindmap()
diff --git a/war/cache.manifest b/war/cache.manifest
index 5fd3d1fb..e58bd188 100644
--- a/war/cache.manifest
+++ b/war/cache.manifest
@@ -1,7 +1,7 @@
CACHE MANIFEST
# THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 08/02/2017 07:37 AM
+# 08/03/2017 04:40 PM
app.html
index.html?offline=1
diff --git a/war/js/app.min.js b/war/js/app.min.js
index c1c0d4f5..2e991c63 100644
--- a/war/js/app.min.js
+++ b/war/js/app.min.js
@@ -2530,10 +2530,10 @@ var B=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function()
a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,t.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,t.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,t.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,t.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
this.canvas.curveTo=mxUtils.bind(this,t.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,t.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function v(){mxActor.call(this)}function u(){mxActor.call(this)}function y(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function A(){mxCylinder.call(this)}function F(){mxShape.call(this)}function G(){mxShape.call(this)}function w(){mxEllipse.call(this)}function J(){mxShape.call(this)}
function K(){mxShape.call(this)}function H(){mxRectangleShape.call(this)}function D(){mxShape.call(this)}function I(){mxShape.call(this)}function N(){mxShape.call(this)}function L(){mxCylinder.call(this)}function O(){mxDoubleEllipse.call(this)}function P(){mxDoubleEllipse.call(this)}function B(){mxArrowConnector.call(this);this.spacing=0}function E(){mxArrowConnector.call(this);this.spacing=0}function C(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function S(){mxActor.call(this)}
-function V(){mxActor.call(this)}function T(){mxActor.call(this)}function R(){mxActor.call(this)}function ja(){mxActor.call(this)}function X(){mxActor.call(this)}function ka(){mxActor.call(this)}function la(){mxActor.call(this)}function Y(){mxActor.call(this)}function W(){mxActor.call(this)}function Z(){mxEllipse.call(this)}function aa(){mxEllipse.call(this)}function ba(){mxEllipse.call(this)}function ea(){mxRhombus.call(this)}function ca(){mxEllipse.call(this)}function na(){mxEllipse.call(this)}function U(){mxEllipse.call(this)}
-function fa(){mxEllipse.call(this)}function Q(){mxActor.call(this)}function oa(){mxActor.call(this)}function pa(){mxActor.call(this)}function ya(a,b,c,d,e,f,g,h,k,l){g+=k;var ga=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(ga.x-e-g,ga.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxCylinder);a.prototype.size=20;a.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));
-f?(a.moveTo(b,e),a.lineTo(b,b),a.lineTo(0,0),a.moveTo(b,b),a.lineTo(d,b)):(a.moveTo(0,0),a.lineTo(d-b,0),a.lineTo(d,b),a.lineTo(d,e),a.lineTo(b,e),a.lineTo(0,e-b),a.lineTo(0,0),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.cube=a;var va=Math.tan(mxUtils.toRadians(30)),ma=(.5-va)/2;mxUtils.extend(c,mxActor);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/va);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5*b,b*ma);a.lineTo(b,.25*b);a.lineTo(.5*
-b,(.5-ma)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.isoRectangle=c;mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+va));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ma)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ma)*b),a.lineTo(.5*b,(1-ma)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*ma),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ma)*b),a.lineTo(0,.75*b),a.close());a.end()};
+function V(){mxActor.call(this)}function T(){mxActor.call(this)}function R(){mxActor.call(this)}function ia(){mxActor.call(this)}function X(){mxActor.call(this)}function ja(){mxActor.call(this)}function ka(){mxActor.call(this)}function Y(){mxActor.call(this)}function W(){mxActor.call(this)}function Z(){mxEllipse.call(this)}function aa(){mxEllipse.call(this)}function ba(){mxEllipse.call(this)}function ea(){mxRhombus.call(this)}function ca(){mxEllipse.call(this)}function ma(){mxEllipse.call(this)}function U(){mxEllipse.call(this)}
+function fa(){mxEllipse.call(this)}function Q(){mxActor.call(this)}function na(){mxActor.call(this)}function oa(){mxActor.call(this)}function za(a,b,c,d,e,f,g,h,k,l){g+=k;var ga=d.clone();d.x-=e*(2*g+k);d.y-=f*(2*g+k);e*=g+k;f*=g+k;return function(){a.ellipse(ga.x-e-g,ga.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxCylinder);a.prototype.size=20;a.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));
+f?(a.moveTo(b,e),a.lineTo(b,b),a.lineTo(0,0),a.moveTo(b,b),a.lineTo(d,b)):(a.moveTo(0,0),a.lineTo(d-b,0),a.lineTo(d,b),a.lineTo(d,e),a.lineTo(b,e),a.lineTo(0,e-b),a.lineTo(0,0),a.close());a.end()};mxCellRenderer.prototype.defaultShapes.cube=a;var va=Math.tan(mxUtils.toRadians(30)),la=(.5-va)/2;mxUtils.extend(c,mxActor);c.prototype.size=20;c.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/va);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5*b,b*la);a.lineTo(b,.25*b);a.lineTo(.5*
+b,(.5-la)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.prototype.defaultShapes.isoRectangle=c;mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+va));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-la)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-la)*b),a.lineTo(.5*b,(1-la)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*b),a.lineTo(.5*b,b*la),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-la)*b),a.lineTo(0,.75*b),a.close());a.end()};
mxCellRenderer.prototype.defaultShapes.isoCube=d;mxUtils.extend(b,mxCylinder);b.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,-b);f||(a.moveTo(0,b),a.curveTo(0,
-b/3,d,-b/3,d,b),a.lineTo(d,e-b),a.curveTo(d,e+b/3,0,e+b/3,0,e-b),a.close())};b.prototype.getLabelBounds=function(a){var b=2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1);if(!this.flipV&&(null==this.direction||this.direction==mxConstants.DIRECTION_EAST)||this.flipV&&this.direction==mxConstants.DIRECTION_WEST)a.y+=b,a.height-=b;else if(!this.flipV&&this.direction==mxConstants.DIRECTION_SOUTH||this.flipV&&this.direction==mxConstants.DIRECTION_NORTH)a.width-=b;else if(!this.flipV&&
this.direction==mxConstants.DIRECTION_WEST||this.flipV&&(null==this.direction||this.direction==mxConstants.DIRECTION_EAST))a.height-=b;else if(!this.flipV&&this.direction==mxConstants.DIRECTION_NORTH||this.flipV&&this.direction==mxConstants.DIRECTION_SOUTH)a.x+=b,a.width-=b;return a};mxCellRenderer.prototype.defaultShapes.datastore=b;mxUtils.extend(e,mxCylinder);e.prototype.size=30;e.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,
@@ -2548,18 +2548,18 @@ mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),
function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};t.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};t.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};t.prototype.curveTo=function(a,b,c,d,e,f){this.originalCurveTo.apply(this.canvas,
arguments);this.lastX=e;this.lastY=f};t.prototype.arcTo=function(a,b,c,d,e,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};t.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),f=Math.sqrt(d*d+e*e);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var g=Math.round(f/10),h=this.defaultVariation;
5>g&&(g=5,h/=3);for(var ga=c(a-this.lastX)*d/g,c=c(b-this.lastY)*e/g,d=d/f,e=e/f,f=0;f"+b.cellEditor.textarea.innerHTML+"
"),d=b.cellEditor.textarea.firstChild);null!=d&&d!=b.cellEditor.textarea&&(d.style.lineHeight=c+"%");a.value=c+" %"},function(a){na=a;mxEvent.addListener(a,"mousedown",function(){ca=b.cellEditor.saveSelection()});mxEvent.addListener(a,"touchstart",
+mxResources.get("spacing"));g.appendChild(n);var ia,X,ja,ka,Y,W=this.addUnitInput(g,"pt",91,44,function(){ia.apply(this,arguments)}),Z=this.addUnitInput(g,"pt",20,44,function(){X.apply(this,arguments)});mxUtils.br(g);this.addLabel(g,mxResources.get("top"),91);this.addLabel(g,mxResources.get("global"),20);mxUtils.br(g);mxUtils.br(g);var aa=this.addUnitInput(g,"pt",162,44,function(){ja.apply(this,arguments)}),ba=this.addUnitInput(g,"pt",91,44,function(){ka.apply(this,arguments)}),ea=this.addUnitInput(g,
+"pt",20,44,function(){Y.apply(this,arguments)});mxUtils.br(g);this.addLabel(g,mxResources.get("left"),162);this.addLabel(g,mxResources.get("bottom"),91);this.addLabel(g,mxResources.get("right"),20);if(b.cellEditor.isContentEditing()){var ca=null,ma=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"),null,null,function(a){var c=""==a.value?120:parseInt(a.value),c=Math.max(0,isNaN(c)?120:c);null!=ca&&(b.cellEditor.restoreSelection(ca),ca=null);for(var d=b.getSelectedElement();null!=
+d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;null!=d&&d==b.cellEditor.textarea&&null!=b.cellEditor.textarea.firstChild&&("P"!=b.cellEditor.textarea.firstChild.nodeName&&(b.cellEditor.textarea.innerHTML=""+b.cellEditor.textarea.innerHTML+"
"),d=b.cellEditor.textarea.firstChild);null!=d&&d!=b.cellEditor.textarea&&(d.style.lineHeight=c+"%");a.value=c+" %"},function(a){ma=a;mxEvent.addListener(a,"mousedown",function(){ca=b.cellEditor.saveSelection()});mxEvent.addListener(a,"touchstart",
function(){ca=b.cellEditor.saveSelection()});a.value="120 %"}));h=f.cloneNode(!1);h.style.paddingLeft="0px";g=this.editorUi.toolbar.addItems(["link","image"],h,!0);n=[this.editorUi.toolbar.addButton("geSprite-horizontalrule",mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1,null)},h),this.editorUi.toolbar.addMenuFunctionInContainer(h,"geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.addInsertTableItem(a)}))];
this.styleButtons(g);this.styleButtons(n);g=this.createPanel();g.style.paddingTop="10px";g.style.paddingBottom="10px";g.appendChild(this.createTitle(mxResources.get("insert")));g.appendChild(h);a.appendChild(g);mxClient.IS_QUIRKS&&(g.style.height="70");g=f.cloneNode(!1);g.style.paddingLeft="0px";n=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),function(){try{null!=w&&b.selectNode(b.insertColumn(w,null!=J?J.cellIndex:0))}catch(Q){alert(Q)}},g),
this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),function(){try{null!=w&&b.selectNode(b.insertColumn(w,null!=J?J.cellIndex+1:-1))}catch(Q){alert(Q)}},g),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),function(){try{null!=w&&null!=J&&b.deleteColumn(w,J.cellIndex)}catch(Q){alert(Q)}},g),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),function(){try{null!=w&&null!=K&&
@@ -2858,11 +2858,11 @@ mxConstants.FONT_ITALIC);c(l[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT
c(p,a==mxConstants.ALIGN_LEFT);c(q,a==mxConstants.ALIGN_CENTER);c(t,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(v,a==mxConstants.ALIGN_TOP);c(u,a==mxConstants.ALIGN_MIDDLE);c(y,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);b=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);H.value=a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_TOP?
"topLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_BOTTOM?"bottom":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_BOTTOM?"bottomRight":a==mxConstants.ALIGN_LEFT?"left":a==mxConstants.ALIGN_RIGHT?"right":"center";a=mxUtils.getValue(e.style,mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION);
a==mxConstants.TEXT_DIRECTION_RTL?L.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?L.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(L.value="automatic");if(d||document.activeElement!=Z)a=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_SPACING,2)),Z.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=W)a=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_SPACING_TOP,0)),W.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ea)a=parseFloat(mxUtils.getValue(e.style,
-mxConstants.STYLE_SPACING_RIGHT,0)),ea.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ba)a=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_SPACING_BOTTOM,0)),ba.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=aa)a=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_SPACING_LEFT,0)),aa.value=isNaN(a)?"":a+" pt"});X=this.installInputHandler(Z,mxConstants.STYLE_SPACING,2,-999,999," pt");ja=this.installInputHandler(W,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");Y=this.installInputHandler(ea,
-mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");la=this.installInputHandler(ba,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");ka=this.installInputHandler(aa,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(B,U);this.addKeyHandler(Z,U);this.addKeyHandler(W,U);this.addKeyHandler(ea,U);this.addKeyHandler(ba,U);this.addKeyHandler(aa,U);b.getModel().addListener(mxEvent.CHANGE,U);this.listeners.push({destroy:function(){b.getModel().removeListener(U)}});U();if(b.cellEditor.isContentEditing()){var fa=
+mxConstants.STYLE_SPACING_RIGHT,0)),ea.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ba)a=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_SPACING_BOTTOM,0)),ba.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=aa)a=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_SPACING_LEFT,0)),aa.value=isNaN(a)?"":a+" pt"});X=this.installInputHandler(Z,mxConstants.STYLE_SPACING,2,-999,999," pt");ia=this.installInputHandler(W,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");Y=this.installInputHandler(ea,
+mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");ka=this.installInputHandler(ba,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");ja=this.installInputHandler(aa,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(B,U);this.addKeyHandler(Z,U);this.addKeyHandler(W,U);this.addKeyHandler(ea,U);this.addKeyHandler(ba,U);this.addKeyHandler(aa,U);b.getModel().addListener(mxEvent.CHANGE,U);this.listeners.push({destroy:function(){b.getModel().removeListener(U)}});U();if(b.cellEditor.isContentEditing()){var fa=
!1,f=function(){fa||(fa=!0,window.setTimeout(function(){for(var a=b.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;if(null!=a){a==b.cellEditor.textarea&&1==b.cellEditor.textarea.children.length&&b.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=b.cellEditor.textarea.firstChild);var d=mxUtils.getCurrentStyle(a);if(null!=d){c(l[0],"bold"==d.fontWeight||null!=b.getParentByName(a,"B",b.cellEditor.textarea));c(l[1],"italic"==d.fontStyle||
null!=b.getParentByName(a,"I",b.cellEditor.textarea));c(l[2],null!=b.getParentByName(a,"U",b.cellEditor.textarea));c(p,"left"==d.textAlign);c(q,"center"==d.textAlign);c(t,"right"==d.textAlign);c(F,"justify"==d.textAlign);c(A,null!=b.getParentByName(a,"SUP",b.cellEditor.textarea));c(z,null!=b.getParentByName(a,"SUB",b.cellEditor.textarea));w=b.getParentByName(a,"TABLE",b.cellEditor.textarea);K=null==w?null:b.getParentByName(a,"TR",w);J=null==w?null:b.getParentByName(a,"TD",w);G.style.display=null!=
-w?"":"none";if(document.activeElement!=B){"FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=E?(a.removeAttribute("size"),a.style.fontSize=E+"px",E=null):B.value=parseFloat(d.fontSize)+" pt";var a=a.style.lineHeight||d.lineHeight,e=parseFloat(a);"px"==a.substring(a.length-2)&&(e/=parseFloat(d.fontSize));"%"!=a.substring(a.length-1)&&(e*=100);na.value=e+" %"}a=d.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+
+w?"":"none";if(document.activeElement!=B){"FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=E?(a.removeAttribute("size"),a.style.fontSize=E+"px",E=null):B.value=parseFloat(d.fontSize)+" pt";var a=a.style.lineHeight||d.lineHeight,e=parseFloat(a);"px"==a.substring(a.length-2)&&(e/=parseFloat(d.fontSize));"%"!=a.substring(a.length-1)&&(e*=100);ma.value=e+" %"}a=d.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+
("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});e=d.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});null!=S&&(V="#"==a.charAt(0)?a:"#000000",S(V,!0));null!=C&&(x="#"==e.charAt(0)?e:null,C(x,!0));null!=k.firstChild&&(d=d.fontFamily,"'"==d.charAt(0)&&(d=d.substring(1)),"'"==d.charAt(d.length-
1)&&(d=d.substring(0,d.length-1)),k.firstChild.nodeValue=d)}}fa=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",f);mxEvent.addListener(b.cellEditor.textarea,"touchend",f);mxEvent.addListener(b.cellEditor.textarea,"mouseup",f);mxEvent.addListener(b.cellEditor.textarea,"keyup",f);this.listeners.push({destroy:function(){}});f()}return a};StyleFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);this.init()};mxUtils.extend(StyleFormatPanel,BaseFormatPanel);
StyleFormatPanel.prototype.init=function(){var a=this.format.getSelectionState();a.containsImage&&"image"!=a.style.shape||this.container.appendChild(this.addFill(this.createPanel()));this.container.appendChild(this.addStroke(this.createPanel()));a=this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_OPACITY,41);a.style.paddingTop="8px";a.style.paddingBottom="8px";this.container.appendChild(a);this.container.appendChild(this.addEffects(this.createPanel()));a=this.addEditOps(this.createPanel());
@@ -6158,7 +6158,7 @@ L=document.createElement("tr"),N=L.cloneNode(!0),Q=document.createElement("td"),
mxResources.get("fitToSheetsAcross"));W.appendChild(l);mxUtils.write(P,mxResources.get("fitToBy"));var R=O.cloneNode(!0);Y.appendChild(R);mxEvent.addListener(O,"focus",function(){K.checked=!0});mxEvent.addListener(R,"focus",function(){K.checked=!0});l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsDown"));U.appendChild(l);L.appendChild(Q);L.appendChild(J);L.appendChild(W);N.appendChild(P);N.appendChild(Y);N.appendChild(U);T.appendChild(L);T.appendChild(N);p.appendChild(T);
m.appendChild(p);h.appendChild(m);m=document.createElement("div");l=document.createElement("div");l.style.fontWeight="bold";l.style.marginBottom="12px";mxUtils.write(l,mxResources.get("paperSize"));m.appendChild(l);l=document.createElement("div");l.style.marginBottom="12px";var V=PageSetupDialog.addPageFormatPanel(l,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);m.appendChild(l);l=document.createElement("span");mxUtils.write(l,mxResources.get("pageScale"));m.appendChild(l);
var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";S.setAttribute("value","100 %");S.style.width="60px";m.appendChild(S);h.appendChild(m);l=document.createElement("div");l.style.cssText="text-align:right;margin:62px 0 0 0;";m=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});m.className="geBtn";a.editor.cancelFirst&&l.appendChild(m);a.isOffline()||(p=mxUtils.button(mxResources.get("help"),function(){window.open("https://desk.draw.io/support/solutions/articles/16000048947")}),
-p.className="geBtn",l.appendChild(p));PrintDialog.previewEnabled&&(p=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),p.className="geBtn",l.appendChild(p));p=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});p.className="geBtn gePrimaryBtn";l.appendChild(p);a.editor.cancelFirst||l.appendChild(m);h.appendChild(l);this.container=h}})();(function(){EditorUi.VERSION="6.9.9";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.prototype.emptyDiagramXml='';EditorUi.prototype.emptyLibraryXml="[]";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=
+p.className="geBtn",l.appendChild(p));PrintDialog.previewEnabled&&(p=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),p.className="geBtn",l.appendChild(p));p=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});p.className="geBtn gePrimaryBtn";l.appendChild(p);a.editor.cancelFirst||l.appendChild(m);h.appendChild(l);this.container=h}})();(function(){EditorUi.VERSION="7.0.0";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging=/.*\.draw\.io$/.test(window.location.hostname);EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.prototype.emptyDiagramXml='';EditorUi.prototype.emptyLibraryXml="[]";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=
36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=
1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas"),b=new Image;b.onload=function(){try{a.getContext("2d").drawImage(b,0,0);var c=a.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=
null!=c&&6')))}catch(m){}try{a=document.createElement("canvas");a.width=a.height=1;var c=a.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==c.match("image/jpeg")}catch(m){}})();
diff --git a/war/js/atlas-viewer.min.js b/war/js/atlas-viewer.min.js
index 4b57366a..f595e412 100644
--- a/war/js/atlas-viewer.min.js
+++ b/war/js/atlas-viewer.min.js
@@ -2371,12 +2371,12 @@ mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPo
arguments)};mxCellRenderer.prototype.defaultShapes.plus=v;var ya=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+c,a.y+c,a.width-2*c,a.height-2*c)}return a};mxRhombus.prototype.paintVertexShape=function(a,c,b,d,f){ya.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var e=2*Math.max(2,this.strokewidth+
1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=e;b+=e;d-=2*e;f-=2*e;0=f.getStatus())try{this.exportFile(f.getText(),a,q,!0,c,d)}catch(z){this.handleError(z)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,h,null,null,4);this.showDialog(a.container,380,5>this.getServiceCount(!1)-
1?270:390,!0,!0);a.init()};EditorUi.prototype.exportFile=function(a,b,d,e,h,q){};EditorUi.prototype.pickFolder=function(a,b,d){b(null)};EditorUi.prototype.exportSvg=function(a,b,d,e,h,q,k,n,l){if(this.spinner.spin(document.body,mxResources.get("export"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;c=b?null:this.editor.graph.background;c==mxConstants.NONE&&(c=null);null==c&&0==b&&(c="#ffffff");var f=this.editor.graph.getSvg(c,a,k,n,null,d);e&&this.editor.graph.addSvgShadow(f);var g=this.getBaseFilename()+
".svg",p=mxUtils.bind(this,function(a){this.spinner.stop();h&&a.setAttribute("content",this.getFileData(!0,null,null,null,d,l));var c='\n'+mxUtils.getXml(a);this.isLocalFileSave()||c.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",c,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}))});this.convertMath(this.editor.graph,
-f,!1,mxUtils.bind(this,function(){q?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(f,p,this.thumbImageCache)):p(f)}))}};EditorUi.prototype.addCheckbox=function(a,b,d,e,h,k){k=null!=k?k:!0;var c=document.createElement("input");c.style.marginRight="8px";c.style.marginTop="16px";c.setAttribute("type","checkbox");d&&(c.setAttribute("checked","checked"),c.defaultChecked=!0);e&&c.setAttribute("disabled","disabled");k&&(a.appendChild(c),mxUtils.write(a,b),h||mxUtils.br(a));return c};
+f,!1,mxUtils.bind(this,function(){q?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(f,p,this.thumbImageCache)):p(f)}))}};EditorUi.prototype.addCheckbox=function(a,b,d,e,h,q){q=null!=q?q:!0;var c=document.createElement("input");c.style.marginRight="8px";c.style.marginTop="16px";c.setAttribute("type","checkbox");d&&(c.setAttribute("checked","checked"),c.defaultChecked=!0);e&&c.setAttribute("disabled","disabled");q&&(a.appendChild(c),mxUtils.write(a,b),h||mxUtils.br(a));return c};
EditorUi.prototype.addEditButton=function(a,b){var c=this.addCheckbox(a,mxResources.get("edit")+":",!0,null,!0);c.style.marginLeft="24px";var d=this.getCurrentFile(),e="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER&&(e=window.location.href);var f=document.createElement("select");f.style.width="120px";f.style.marginLeft="8px";f.style.marginRight="10px";f.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));
f.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d,mxResources.get("custom")+"...");f.appendChild(d);a.appendChild(f);mxEvent.addListener(f,"change",mxUtils.bind(this,function(){if("custom"==f.value){var a=new FilenameDialog(this,e,mxResources.get("ok"),function(a){null!=a?e=a:f.value="blank"},mxResources.get("url"),null,null,null,null,function(){f.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",
mxUtils.bind(this,function(){c.checked&&(null==b||b.checked)?f.removeAttribute("disabled"):f.setAttribute("disabled","disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===f.value?"_blank":e:null},getEditInput:function(){return c},getEditSelect:function(){return f}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){k.innerHTML='