diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/CanvasItem.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/CanvasItem.cs index 4474eeabeb..0a9053338f 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/CanvasItem.cs +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/CanvasItem.cs @@ -468,9 +468,16 @@ namespace ClassDiagram protected virtual void FillXmlElement (XmlElement element, XmlDocument document) { - element.SetAttribute("X", X.ToString(CultureInfo.InvariantCulture)); - element.SetAttribute("Y", Y.ToString(CultureInfo.InvariantCulture)); - element.SetAttribute("Width", Width.ToString(CultureInfo.InvariantCulture)); + XmlElement position = document.CreateElement("Position"); + FillXmlPositionElement(position, document); + element.AppendChild(position); + } + + protected virtual void FillXmlPositionElement (XmlElement position, XmlDocument document) + { + position.SetAttribute("X", X.ToString(CultureInfo.InvariantCulture)); + position.SetAttribute("Y", Y.ToString(CultureInfo.InvariantCulture)); + position.SetAttribute("Width", Width.ToString(CultureInfo.InvariantCulture)); } public virtual void WriteToXml(XmlDocument document) @@ -481,6 +488,12 @@ namespace ClassDiagram } public virtual void LoadFromXml (XPathNavigator navigator) + { + XPathNodeIterator ni = navigator.SelectChildren("Position", ""); + ReadXmlPositionElement(ni.Current); + } + + protected virtual void ReadXmlPositionElement (XPathNavigator navigator) { X = float.Parse(navigator.GetAttribute("X", ""), CultureInfo.InvariantCulture); Y = float.Parse(navigator.GetAttribute("Y", ""), CultureInfo.InvariantCulture); diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvas.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvas.cs index 959bc083fb..a20b6d9b6e 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvas.cs +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvas.cs @@ -548,10 +548,38 @@ namespace ClassDiagram XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", "yes"); doc.InsertBefore(decl, doc.FirstChild); - XmlAttribute zoom = doc.CreateAttribute("Zoom"); + XmlAttribute zoom = doc.CreateAttribute("Zoom"); // Non-Standard attribute zoom.Value = Zoom.ToString(System.Globalization.CultureInfo.InvariantCulture); doc.DocumentElement.Attributes.Append(zoom); + #region unsupported attributes - added for compatability + // FIXME - Attribute not yet supported + XmlAttribute majorVersion = doc.CreateAttribute("MajorVersion"); + majorVersion.Value = "1"; + doc.DocumentElement.Attributes.Append(majorVersion); + + // FIXME - Attribute not yet supported + XmlAttribute minorVersion = doc.CreateAttribute("MinorVersion"); + minorVersion.Value = "1"; + doc.DocumentElement.Attributes.Append(minorVersion); + + // FIXME - Attribute not yet supported + XmlAttribute membersFormat = doc.CreateAttribute("MembersFormat"); + membersFormat.Value = "FullSignature"; + doc.DocumentElement.Attributes.Append(membersFormat); + + // FIXME - Element not yet supported + XmlAttribute fontName = doc.CreateAttribute("Name"); + fontName.Value = "Tahoma"; + + XmlAttribute fontSize = doc.CreateAttribute("Size"); + fontSize.Value = "8.25"; + + XmlElement fontElement = doc.CreateElement("Font"); + fontElement.Attributes.Append(fontName); + fontElement.Attributes.Append(fontSize); + #endregion + foreach (CanvasItemData item in itemsList) { item.Item.WriteToXml(doc); @@ -576,7 +604,7 @@ namespace ClassDiagram AddCanvasItem(canvasitem); } } - ni = nav.Select(@"/ClassDiagram/Note"); + ni = nav.Select(@"/ClassDiagram/Comment"); while (ni.MoveNext()) { NoteCanvasItem note = new NoteCanvasItem(); diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs index a195d5586f..704bcd1c31 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs @@ -58,7 +58,8 @@ namespace ClassDiagram DrawableItemsStack groups = new DrawableItemsStack(); Dictionary groupNames = new Dictionary(); // TODO - this is really an ugly patch - + Dictionary groupsByName = new Dictionary(); // TODO - this is really an ugly patch + DrawableItemsStack interfaces = new DrawableItemsStack(); DrawableRectangle titlesBackgroundCollapsed; @@ -418,6 +419,7 @@ namespace ClassDiagram { InteractiveHeaderedItem tg = PrepareGroup (title, groupContent); groupNames.Add(tg, title); + groupsByName.Add(title, tg); groups.Add(tg); } } @@ -547,21 +549,25 @@ namespace ClassDiagram protected override XmlElement CreateXmlElement(XmlDocument doc) { - return doc.CreateElement("ClassItem"); + return doc.CreateElement("Class"); } protected override void FillXmlElement(XmlElement element, XmlDocument document) { base.FillXmlElement(element, document); - element.SetAttribute("Type", RepresentedClassType.FullyQualifiedName); + element.SetAttribute("Name", RepresentedClassType.FullyQualifiedName); element.SetAttribute("Collapsed", Collapsed.ToString()); + // + XmlElement compartments = document.CreateElement("Compartments"); foreach (InteractiveHeaderedItem tg in groups) { - XmlElement grp = document.CreateElement(groupNames[tg]); + XmlElement grp = document.CreateElement("Compartment"); + grp.SetAttribute("Name", groupNames[tg]); grp.SetAttribute("Collapsed", tg.Collapsed.ToString()); - element.AppendChild(grp); + compartments.AppendChild(grp); } + element.AppendChild(compartments); } @@ -571,11 +577,15 @@ namespace ClassDiagram Collapsed = bool.Parse(navigator.GetAttribute("Collapsed", "")); - foreach (InteractiveHeaderedItem tg in groups) + XPathNodeIterator compNI = navigator.Select("Compartments/Compartment"); + while (compNI.MoveNext()) { - XPathNodeIterator ni = navigator.SelectChildren(groupNames[tg], ""); - ni.MoveNext(); - tg.Collapsed = bool.Parse(ni.Current.GetAttribute("Collapsed", "")); + XPathNavigator compNav = compNI.Current; + InteractiveHeaderedItem grp; + if (groupsByName.TryGetValue(compNav.GetAttribute("Name", ""), out grp)) + { + grp.Collapsed = bool.Parse(compNav.GetAttribute("Collapsed", "")); + } } } diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/DelegateCanvasItem.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/DelegateCanvasItem.cs index b7685d1452..9d06e0a5bb 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/DelegateCanvasItem.cs +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/DelegateCanvasItem.cs @@ -60,6 +60,11 @@ namespace ClassDiagram parameters.Add(ts); } } + + protected override XmlElement CreateXmlElement(XmlDocument doc) + { + return doc.CreateElement("Delegate"); + } } public delegate TestEnum TestDelegate (int num, string str); diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/EnumCanvasItem.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/EnumCanvasItem.cs index 8c329b4a55..e783aa4e88 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/EnumCanvasItem.cs +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/EnumCanvasItem.cs @@ -13,6 +13,9 @@ using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; +using System.Xml; +using System.Xml.XPath; + using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Project; @@ -50,5 +53,10 @@ namespace ClassDiagram fields.Clear(); PrepareMembersContent (RepresentedClassType.Fields, fields); } + + protected override XmlElement CreateXmlElement(XmlDocument doc) + { + return doc.CreateElement("Enum"); + } } } diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/InterfaceCanvasItem.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/InterfaceCanvasItem.cs index c1c57c26b1..5edfae1594 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/InterfaceCanvasItem.cs +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/InterfaceCanvasItem.cs @@ -13,7 +13,9 @@ using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; -//using System.Reflection; +using System.Xml; +using System.Xml.XPath; + using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Project; @@ -35,6 +37,11 @@ namespace ClassDiagram { get { return innerTitlesBG; } } + + protected override XmlElement CreateXmlElement(XmlDocument doc) + { + return doc.CreateElement("Interface"); + } } } diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/NoteCanvasItem.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/NoteCanvasItem.cs index bee5c0cce2..b380ffb654 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/NoteCanvasItem.cs +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/NoteCanvasItem.cs @@ -92,22 +92,33 @@ namespace ClassDiagram #region Storage protected override XmlElement CreateXmlElement(XmlDocument doc) { - return doc.CreateElement("Note"); + return doc.CreateElement("Comment"); } protected override void FillXmlElement(XmlElement element, XmlDocument document) { base.FillXmlElement(element, document); - element.SetAttribute("Height", Height.ToString(CultureInfo.InvariantCulture)); - element.SetAttribute("Note", Note); + element.SetAttribute("CommentText", Note); + } + + protected override void FillXmlPositionElement(XmlElement position, XmlDocument document) + { + base.FillXmlPositionElement(position, document); + position.SetAttribute("Height", Height.ToString(CultureInfo.InvariantCulture)); } public override void LoadFromXml (XPathNavigator navigator) { base.LoadFromXml(navigator); + Note = navigator.GetAttribute("CommentText", ""); + } + + protected override void ReadXmlPositionElement(XPathNavigator navigator) + { + base.ReadXmlPositionElement(navigator); Height = float.Parse(navigator.GetAttribute("Height", ""), CultureInfo.InvariantCulture); - Note = navigator.GetAttribute("Note", ""); } + #endregion #region Geometry diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/StructCanvasItem.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/StructCanvasItem.cs index c729ea0376..1c609321f7 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/StructCanvasItem.cs +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/StructCanvasItem.cs @@ -13,7 +13,9 @@ using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; -//using System.Reflection; +using System.Xml; +using System.Xml.XPath; + using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Project; @@ -38,5 +40,10 @@ namespace ClassDiagram { get { return false; } } + + protected override XmlElement CreateXmlElement(XmlDocument doc) + { + return doc.CreateElement("Struct"); + } } }