Browse Source

Class diagram file format matches the Visual Studio Class Diagram file format better (still not perfect, somewhat buggy).

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2325 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Itar Bar-Haim 19 years ago
parent
commit
6d23a5bc2a
  1. 19
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/CanvasItem.cs
  2. 32
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvas.cs
  3. 28
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs
  4. 5
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/DelegateCanvasItem.cs
  5. 8
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/EnumCanvasItem.cs
  6. 9
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/InterfaceCanvasItem.cs
  7. 19
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/NoteCanvasItem.cs
  8. 9
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/StructCanvasItem.cs

19
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/CanvasItem.cs

@ -468,9 +468,16 @@ namespace ClassDiagram
protected virtual void FillXmlElement (XmlElement element, XmlDocument document) protected virtual void FillXmlElement (XmlElement element, XmlDocument document)
{ {
element.SetAttribute("X", X.ToString(CultureInfo.InvariantCulture)); XmlElement position = document.CreateElement("Position");
element.SetAttribute("Y", Y.ToString(CultureInfo.InvariantCulture)); FillXmlPositionElement(position, document);
element.SetAttribute("Width", Width.ToString(CultureInfo.InvariantCulture)); 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) public virtual void WriteToXml(XmlDocument document)
@ -481,6 +488,12 @@ namespace ClassDiagram
} }
public virtual void LoadFromXml (XPathNavigator navigator) 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); X = float.Parse(navigator.GetAttribute("X", ""), CultureInfo.InvariantCulture);
Y = float.Parse(navigator.GetAttribute("Y", ""), CultureInfo.InvariantCulture); Y = float.Parse(navigator.GetAttribute("Y", ""), CultureInfo.InvariantCulture);

32
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvas.cs

@ -548,10 +548,38 @@ namespace ClassDiagram
XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", "yes"); XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", "yes");
doc.InsertBefore(decl, doc.FirstChild); 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); zoom.Value = Zoom.ToString(System.Globalization.CultureInfo.InvariantCulture);
doc.DocumentElement.Attributes.Append(zoom); 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) foreach (CanvasItemData item in itemsList)
{ {
item.Item.WriteToXml(doc); item.Item.WriteToXml(doc);
@ -576,7 +604,7 @@ namespace ClassDiagram
AddCanvasItem(canvasitem); AddCanvasItem(canvasitem);
} }
} }
ni = nav.Select(@"/ClassDiagram/Note"); ni = nav.Select(@"/ClassDiagram/Comment");
while (ni.MoveNext()) while (ni.MoveNext())
{ {
NoteCanvasItem note = new NoteCanvasItem(); NoteCanvasItem note = new NoteCanvasItem();

28
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs

@ -58,7 +58,8 @@ namespace ClassDiagram
DrawableItemsStack<InteractiveHeaderedItem> groups = new DrawableItemsStack<InteractiveHeaderedItem>(); DrawableItemsStack<InteractiveHeaderedItem> groups = new DrawableItemsStack<InteractiveHeaderedItem>();
Dictionary<InteractiveHeaderedItem, string> groupNames = new Dictionary<InteractiveHeaderedItem, string>(); // TODO - this is really an ugly patch Dictionary<InteractiveHeaderedItem, string> groupNames = new Dictionary<InteractiveHeaderedItem, string>(); // TODO - this is really an ugly patch
Dictionary<string, InteractiveHeaderedItem> groupsByName = new Dictionary<string, InteractiveHeaderedItem>(); // TODO - this is really an ugly patch
DrawableItemsStack<TextSegment> interfaces = new DrawableItemsStack<TextSegment>(); DrawableItemsStack<TextSegment> interfaces = new DrawableItemsStack<TextSegment>();
DrawableRectangle titlesBackgroundCollapsed; DrawableRectangle titlesBackgroundCollapsed;
@ -418,6 +419,7 @@ namespace ClassDiagram
{ {
InteractiveHeaderedItem tg = PrepareGroup (title, groupContent); InteractiveHeaderedItem tg = PrepareGroup (title, groupContent);
groupNames.Add(tg, title); groupNames.Add(tg, title);
groupsByName.Add(title, tg);
groups.Add(tg); groups.Add(tg);
} }
} }
@ -547,21 +549,25 @@ namespace ClassDiagram
protected override XmlElement CreateXmlElement(XmlDocument doc) protected override XmlElement CreateXmlElement(XmlDocument doc)
{ {
return doc.CreateElement("ClassItem"); return doc.CreateElement("Class");
} }
protected override void FillXmlElement(XmlElement element, XmlDocument document) protected override void FillXmlElement(XmlElement element, XmlDocument document)
{ {
base.FillXmlElement(element, document); base.FillXmlElement(element, document);
element.SetAttribute("Type", RepresentedClassType.FullyQualifiedName); element.SetAttribute("Name", RepresentedClassType.FullyQualifiedName);
element.SetAttribute("Collapsed", Collapsed.ToString()); element.SetAttribute("Collapsed", Collapsed.ToString());
//<Compartments>
XmlElement compartments = document.CreateElement("Compartments");
foreach (InteractiveHeaderedItem tg in groups) 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()); 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", "")); 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], ""); XPathNavigator compNav = compNI.Current;
ni.MoveNext(); InteractiveHeaderedItem grp;
tg.Collapsed = bool.Parse(ni.Current.GetAttribute("Collapsed", "")); if (groupsByName.TryGetValue(compNav.GetAttribute("Name", ""), out grp))
{
grp.Collapsed = bool.Parse(compNav.GetAttribute("Collapsed", ""));
}
} }
} }

5
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/DelegateCanvasItem.cs

@ -60,6 +60,11 @@ namespace ClassDiagram
parameters.Add(ts); parameters.Add(ts);
} }
} }
protected override XmlElement CreateXmlElement(XmlDocument doc)
{
return doc.CreateElement("Delegate");
}
} }
public delegate TestEnum TestDelegate (int num, string str); public delegate TestEnum TestDelegate (int num, string str);

8
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/EnumCanvasItem.cs

@ -13,6 +13,9 @@ using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
using System.Xml;
using System.Xml.XPath;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
@ -50,5 +53,10 @@ namespace ClassDiagram
fields.Clear(); fields.Clear();
PrepareMembersContent <IField> (RepresentedClassType.Fields, fields); PrepareMembersContent <IField> (RepresentedClassType.Fields, fields);
} }
protected override XmlElement CreateXmlElement(XmlDocument doc)
{
return doc.CreateElement("Enum");
}
} }
} }

9
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/InterfaceCanvasItem.cs

@ -13,7 +13,9 @@ using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
//using System.Reflection; using System.Xml;
using System.Xml.XPath;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
@ -35,6 +37,11 @@ namespace ClassDiagram
{ {
get { return innerTitlesBG; } get { return innerTitlesBG; }
} }
protected override XmlElement CreateXmlElement(XmlDocument doc)
{
return doc.CreateElement("Interface");
}
} }
} }

19
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/NoteCanvasItem.cs

@ -92,22 +92,33 @@ namespace ClassDiagram
#region Storage #region Storage
protected override XmlElement CreateXmlElement(XmlDocument doc) protected override XmlElement CreateXmlElement(XmlDocument doc)
{ {
return doc.CreateElement("Note"); return doc.CreateElement("Comment");
} }
protected override void FillXmlElement(XmlElement element, XmlDocument document) protected override void FillXmlElement(XmlElement element, XmlDocument document)
{ {
base.FillXmlElement(element, document); base.FillXmlElement(element, document);
element.SetAttribute("Height", Height.ToString(CultureInfo.InvariantCulture)); element.SetAttribute("CommentText", Note);
element.SetAttribute("Note", 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) public override void LoadFromXml (XPathNavigator navigator)
{ {
base.LoadFromXml(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); Height = float.Parse(navigator.GetAttribute("Height", ""), CultureInfo.InvariantCulture);
Note = navigator.GetAttribute("Note", "");
} }
#endregion #endregion
#region Geometry #region Geometry

9
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/StructCanvasItem.cs

@ -13,7 +13,9 @@ using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
//using System.Reflection; using System.Xml;
using System.Xml.XPath;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
@ -38,5 +40,10 @@ namespace ClassDiagram
{ {
get { return false; } get { return false; }
} }
protected override XmlElement CreateXmlElement(XmlDocument doc)
{
return doc.CreateElement("Struct");
}
} }
} }

Loading…
Cancel
Save