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 @@ -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 @@ -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);

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

@ -548,10 +548,38 @@ namespace ClassDiagram @@ -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 @@ -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();

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

@ -58,7 +58,8 @@ namespace ClassDiagram @@ -58,7 +58,8 @@ namespace ClassDiagram
DrawableItemsStack<InteractiveHeaderedItem> groups = new DrawableItemsStack<InteractiveHeaderedItem>();
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>();
DrawableRectangle titlesBackgroundCollapsed;
@ -418,6 +419,7 @@ namespace ClassDiagram @@ -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 @@ -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());
//<Compartments>
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 @@ -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", ""));
}
}
}

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

@ -60,6 +60,11 @@ namespace ClassDiagram @@ -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);

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

@ -13,6 +13,9 @@ using System.Collections.Generic; @@ -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 @@ -50,5 +53,10 @@ namespace ClassDiagram
fields.Clear();
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; @@ -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 @@ -35,6 +37,11 @@ namespace ClassDiagram
{
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 @@ -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

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

@ -13,7 +13,9 @@ using System.Collections.Generic; @@ -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 @@ -38,5 +40,10 @@ namespace ClassDiagram
{
get { return false; }
}
protected override XmlElement CreateXmlElement(XmlDocument doc)
{
return doc.CreateElement("Struct");
}
}
}

Loading…
Cancel
Save