Browse Source

Better compatibility with VS2005 format. Made the Enum and the Delegate blocks look more like in VS2005. Minor bug fixes.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2377 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Itar Bar-Haim 19 years ago
parent
commit
adf25cb21a
  1. 1
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/ClassCanvas.csproj
  2. 3
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Interactivity/IInteractiveDrawable.cs
  3. 2
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Interactivity/IMouseInteractable.cs
  4. 24
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Interactivity/InteractiveHeaderedItem.cs
  5. 53
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Interactivity/InteractiveItemsStack.cs
  6. 16
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/CanvasItem.cs
  7. 9
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvas.cs
  8. 137
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs
  9. 73
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/DelegateCanvasItem.cs
  10. 15
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/EnumCanvasItem.cs
  11. 4
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/NoteCanvasItem.cs
  12. 12
      src/AddIns/DisplayBindings/ClassDiagram/DiagramRouter/BaseRectangle.cs
  13. 2
      src/AddIns/DisplayBindings/ClassDiagram/DiagramRouter/Drawables/DrawableItemsStack.cs
  14. 9
      src/AddIns/DisplayBindings/ClassDiagram/DiagramRouter/Drawables/HeaderedItem.cs
  15. 15
      src/AddIns/DisplayBindings/ClassDiagram/DiagramRouter/ItemsStack.cs

1
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/ClassCanvas.csproj

@ -46,6 +46,7 @@ @@ -46,6 +46,7 @@
<Compile Include="Interactivity\IInteractiveDrawable.cs" />
<Compile Include="Interactivity\IMouseInteractable.cs" />
<Compile Include="Interactivity\InteractiveHeaderedItem.cs" />
<Compile Include="Interactivity\InteractiveItemsStack.cs" />
<Compile Include="Src\CanvasItem.cs" />
<Compile Include="Src\ClassCanvas.cs" />
<Compile Include="Src\ClassCanvas.Designer.cs">

3
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Interactivity/IInteractiveDrawable.cs

@ -18,4 +18,7 @@ namespace ClassDiagram @@ -18,4 +18,7 @@ namespace ClassDiagram
{
}
public interface IInteractiveRectangle : IDrawableRectangle, IHitTestable, IMouseInteractable
{
}
}

2
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Interactivity/IMouseInteractable.cs

@ -80,4 +80,6 @@ namespace ClassDiagram @@ -80,4 +80,6 @@ namespace ClassDiagram
/// </summary>
void HandleMouseLeave ();
}
public delegate void PositionDelegate (object sender, PointF pos);
}

24
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Interactivity/InteractiveHeaderedItem.cs

@ -25,16 +25,16 @@ namespace ClassDiagram @@ -25,16 +25,16 @@ namespace ClassDiagram
IDrawableRectangle content)
: base (headerCollapsed, headerExpanded, content) {}
public event EventHandler HeaderClicked = delegate {};
public event EventHandler ContentClicked = delegate {};
public event EventHandler HeaderMouseDown = delegate {};
public event EventHandler ContentMouseDown = delegate {};
public event EventHandler HeaderMouseMove = delegate {};
public event EventHandler ContentMouseMove = delegate {};
public event EventHandler HeaderMouseUp = delegate {};
public event EventHandler ContentMouseUp = delegate {};
public event PositionDelegate HeaderClicked = delegate {};
public event PositionDelegate ContentClicked = delegate {};
public event PositionDelegate HeaderMouseDown = delegate {};
public event PositionDelegate ContentMouseDown = delegate {};
public event PositionDelegate HeaderMouseMove = delegate {};
public event PositionDelegate ContentMouseMove = delegate {};
public event PositionDelegate HeaderMouseUp = delegate {};
public event PositionDelegate ContentMouseUp = delegate {};
private void HandleMouseEvent(PointF pos, EventHandler headerEvent, EventHandler contentEvent)
private void HandleMouseEvent(PointF pos, PositionDelegate headerEvent, PositionDelegate contentEvent)
{
if (Collapsed)
{
@ -43,7 +43,7 @@ namespace ClassDiagram @@ -43,7 +43,7 @@ namespace ClassDiagram
pos.Y >= HeaderCollapsed.AbsoluteY &&
pos.Y <= HeaderCollapsed.AbsoluteY + HeaderCollapsed.ActualHeight)
{
headerEvent(this, EventArgs.Empty);
headerEvent(this, pos);
}
}
else
@ -53,14 +53,14 @@ namespace ClassDiagram @@ -53,14 +53,14 @@ namespace ClassDiagram
pos.Y >= HeaderExpanded.AbsoluteY &&
pos.Y <= HeaderExpanded.AbsoluteY + HeaderExpanded.ActualHeight)
{
headerEvent(this, EventArgs.Empty);
headerEvent(this, pos);
}
else if (pos.X >= Content.AbsoluteX &&
pos.X <= Content.AbsoluteX + Content.ActualWidth &&
pos.Y >= Content.AbsoluteY &&
pos.Y <= Content.AbsoluteY + Content.ActualHeight)
{
contentEvent(this, EventArgs.Empty);
contentEvent(this, pos);
}
}
}

53
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Interactivity/InteractiveItemsStack.cs

@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
/*
* Created by SharpDevelop.
* User: itai
* Date: 28/09/2006
* Time: 19:03
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using Tools.Diagrams;
using Tools.Diagrams.Drawables;
namespace ClassDiagram
{
public class InteractiveItemsStack : DrawableItemsStack<IDrawableRectangle>, IMouseInteractable
{
public void HandleMouseClick(PointF pos)
{
foreach (IMouseInteractable mi in this)
mi.HandleMouseClick(pos);
}
public void HandleMouseDown(PointF pos)
{
foreach (IMouseInteractable mi in this)
mi.HandleMouseDown(pos);
}
public void HandleMouseMove(PointF pos)
{
foreach (IMouseInteractable mi in this)
mi.HandleMouseMove(pos);
}
public void HandleMouseUp(PointF pos)
{
foreach (IMouseInteractable mi in this)
mi.HandleMouseUp(pos);
}
public void HandleMouseLeave()
{
foreach (IMouseInteractable mi in this)
mi.HandleMouseLeave();
}
}
}

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

@ -66,7 +66,7 @@ namespace ClassDiagram @@ -66,7 +66,7 @@ namespace ClassDiagram
}
}
public abstract class CanvasItem : BaseRectangle, IInteractiveDrawable, IDrawableRectangle
public abstract class CanvasItem : BaseRectangle, IInteractiveDrawable, IDrawableRectangle, IInteractiveRectangle
{
#region Constructors
@ -428,15 +428,15 @@ namespace ClassDiagram @@ -428,15 +428,15 @@ namespace ClassDiagram
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));
position.SetAttribute("X", (X/100).ToString(CultureInfo.InvariantCulture));
position.SetAttribute("Y", (Y/100).ToString(CultureInfo.InvariantCulture));
position.SetAttribute("Width", (Width/100).ToString(CultureInfo.InvariantCulture));
}
public virtual void WriteToXml(XmlDocument document)
{
XmlElement elem = CreateXmlElement(document);
FillXmlElement (elem, document);
FillXmlElement(elem, document);
document.DocumentElement.AppendChild(elem);
}
@ -449,9 +449,9 @@ namespace ClassDiagram @@ -449,9 +449,9 @@ namespace ClassDiagram
protected virtual void ReadXmlPositionElement (XPathNavigator navigator)
{
X = float.Parse(navigator.GetAttribute("X", ""), CultureInfo.InvariantCulture);
Y = float.Parse(navigator.GetAttribute("Y", ""), CultureInfo.InvariantCulture);
Width = float.Parse(navigator.GetAttribute("Width", ""), CultureInfo.InvariantCulture);
X = 100 * float.Parse(navigator.GetAttribute("X", ""), CultureInfo.InvariantCulture);
Y = 100 * float.Parse(navigator.GetAttribute("Y", ""), CultureInfo.InvariantCulture);
Width = 100 * float.Parse(navigator.GetAttribute("Width", ""), CultureInfo.InvariantCulture);
}
#endregion

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

@ -170,7 +170,7 @@ namespace ClassDiagram @@ -170,7 +170,7 @@ namespace ClassDiagram
w = Math.Max(w, item.Item.X + item.Item.ActualWidth + item.Item.Border);
h = Math.Max(h, item.Item.Y + item.Item.ActualHeight + item.Item.Border);
}
return new SizeF(w + 40, h + 40);
return new SizeF(w + 50, h + 50);
}
public Size GetDiagramPixelSize ()
@ -183,7 +183,8 @@ namespace ClassDiagram @@ -183,7 +183,8 @@ namespace ClassDiagram
public void SetRecommendedGraphicsAttributes (Graphics graphics)
{
graphics.CompositingQuality = CompositingQuality.HighSpeed;
graphics.SmoothingMode = SmoothingMode.AntiAlias;
//graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.PageUnit = GraphicsUnit.Pixel;
graphics.PixelOffsetMode = PixelOffsetMode.Half;
graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
@ -395,8 +396,8 @@ namespace ClassDiagram @@ -395,8 +396,8 @@ namespace ClassDiagram
{
PointF pos = new PointF(args.Value.X, args.Value.Y);
pos.X = Math.Max ((float) Math.Round(pos.X / 10.0f) * 10.0f, 40.0f);
pos.Y = Math.Max ((float) Math.Round(pos.Y / 10.0f) * 10.0f, 40.0f);
pos.X = Math.Max ((float) Math.Round(pos.X / 10.0f) * 10.0f, 50.0f);
pos.Y = Math.Max ((float) Math.Round(pos.Y / 10.0f) * 10.0f, 50.0f);
args.Cancel = (pos.X == args.Value.X) && (pos.Y == args.Value.Y);
args.Value = pos;

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

@ -65,8 +65,6 @@ namespace ClassDiagram @@ -65,8 +65,6 @@ namespace ClassDiagram
DrawableRectangle titlesBackgroundCollapsed;
DrawableRectangle titlesBackgroundExpanded;
const int radius = 20;
protected override bool AllowHeightModifications()
{
return false;
@ -101,26 +99,30 @@ namespace ClassDiagram @@ -101,26 +99,30 @@ namespace ClassDiagram
public ClassCanvasItem (IClass ct)
{
classtype = ct;
grad = new LinearGradientBrush(
new PointF(0, 0), new PointF(1, 0),
TitleBackground, Color.White);
classItemHeaderedContent = new InteractiveHeaderedItem(titlesCollapsed, titlesExpanded, InitContentContainer(InitContent()));
classItemContainer.Container = this;
classItemContainer.Add(classItemHeaderedContent);
Pen outlinePen = GetClassOutlinePen();
if (RoundedCorners)
{
int radius = CornerRadius;
containingShape = new DrawableRectangle(null, outlinePen, radius, radius, radius, radius);
}
else
containingShape = new DrawableRectangle(null, outlinePen, 0, 0, 0, 0);
classItemContainer.Add(containingShape);
classItemContainer.OrientationAxis = Axis.Z;
grad = new LinearGradientBrush(
new PointF(0, 0), new PointF(1, 0),
TitleBackground, Color.White);
if (RoundedCorners)
{
int radius = CornerRadius;
titlesBackgroundCollapsed = new DrawableRectangle(grad, null, radius, radius, radius, radius);
titlesBackgroundExpanded = new DrawableRectangle(grad, null, radius, radius, 0, 0);
}
@ -177,11 +179,24 @@ namespace ClassDiagram @@ -177,11 +179,24 @@ namespace ClassDiagram
get { return false; }
}
protected virtual DrawableRectangle InitContentBackground()
{
if (RoundedCorners)
{
int radius = CornerRadius;
return new DrawableRectangle(ContentBG, null, 0, 0, radius, radius);
}
else
return new DrawableRectangle(ContentBG, null, 0, 0, 0, 0);
}
protected virtual DrawableItemsStack InitContentContainer(params IDrawableRectangle[] items)
{
DrawableItemsStack content = new DrawableItemsStack();
content.OrientationAxis = Axis.Z;
content.Add(new DrawableRectangle(Brushes.White, null, 1, 1, radius, radius));
content.Add(InitContentBackground());
foreach (IDrawableRectangle item in items)
content.Add(item);
@ -209,19 +224,35 @@ namespace ClassDiagram @@ -209,19 +224,35 @@ namespace ClassDiagram
static Color titlesBG = Color.FromArgb(255,217, 225, 241);
protected virtual Color TitleBackground
{
get { return titlesBG;}
get { return titlesBG; }
}
protected virtual LinearGradientBrush TitleBG
{
get { return grad; }
}
static Brush innerTitlesBG = new SolidBrush(Color.FromArgb(255, 240, 242, 249));
protected virtual Brush InnerTitlesBackground
{
get { return innerTitlesBG;}
get { return innerTitlesBG; }
}
static Brush contentBG = new SolidBrush(Color.FromArgb(255, 255, 255, 255));
protected virtual Brush ContentBG
{
get { return contentBG; }
}
protected virtual bool RoundedCorners
{
get { return true; }
}
protected virtual int CornerRadius
{
get { return 15; }
}
#endregion
#region Preparations
@ -380,27 +411,30 @@ namespace ClassDiagram @@ -380,27 +411,30 @@ namespace ClassDiagram
InteractiveHeaderedItem tg = new InteractiveHeaderedItem(headerCollapsed, headerExpanded, content);
tg.HeaderClicked += delegate { tg.Collapsed = !tg.Collapsed; };
IMouseInteractable interactive = content as IMouseInteractable;
if (interactive != null)
tg.ContentClicked += delegate (object sender, PointF pos) { interactive.HandleMouseClick(pos); };
tg.RedrawNeeded += HandleRedraw;
return tg;
}
protected virtual DrawableItemsStack PrepareMembersContent <MT> (ICollection<MT> members) where MT : IMember
protected virtual InteractiveItemsStack PrepareMembersContent <MT> (ICollection<MT> members) where MT : IMember
{
if (members == null) return null;
if (members.Count == 0) return null;
DrawableItemsStack content = new DrawableItemsStack();
InteractiveItemsStack content = new InteractiveItemsStack();
content.OrientationAxis = Axis.Y;
PrepareMembersContent <MT> (members, content);
return content;
}
private DrawableItemsStack PerpareNestedTypesContent()
private InteractiveItemsStack PerpareNestedTypesContent()
{
DrawableItemsStack innerItems = new DrawableItemsStack();
InteractiveItemsStack innerItems = new InteractiveItemsStack();
innerItems.OrientationAxis = Axis.Y;
innerItems.Spacing = 10;
innerItems.Border = 10;
innerItems.Padding = 10;
foreach (IClass ct in classtype.InnerClasses)
{
ClassCanvasItem innerItem = ClassCanvas.CreateItemFromType(ct);
@ -409,7 +443,7 @@ namespace ClassDiagram @@ -409,7 +443,7 @@ namespace ClassDiagram
return innerItems;
}
protected virtual void PrepareMembersContent <MT> (ICollection<MT> members, DrawableItemsStack content) where MT : IMember
protected virtual void PrepareMembersContent <MT> (ICollection<MT> members, InteractiveItemsStack content) where MT : IMember
{
if (members == null) return;
if (members.Count == 0) return;
@ -433,7 +467,7 @@ namespace ClassDiagram @@ -433,7 +467,7 @@ namespace ClassDiagram
#endregion
}
private void AddGroupToContent(string title, DrawableItemsStack groupContent)
private void AddGroupToContent(string title, InteractiveItemsStack groupContent)
{
if (groupContent != null)
{
@ -450,10 +484,10 @@ namespace ClassDiagram @@ -450,10 +484,10 @@ namespace ClassDiagram
groups.Clear();
DrawableItemsStack propertiesContent = PrepareMembersContent <IProperty> (classtype.Properties);
DrawableItemsStack methodsContent = PrepareMembersContent <IMethod> (classtype.Methods);
DrawableItemsStack fieldsContent = PrepareMembersContent <IField> (classtype.Fields);
DrawableItemsStack eventsContent = PrepareMembersContent <IEvent> (classtype.Events);
InteractiveItemsStack propertiesContent = PrepareMembersContent <IProperty> (classtype.Properties);
InteractiveItemsStack methodsContent = PrepareMembersContent <IMethod> (classtype.Methods);
InteractiveItemsStack fieldsContent = PrepareMembersContent <IField> (classtype.Fields);
InteractiveItemsStack eventsContent = PrepareMembersContent <IEvent> (classtype.Events);
AddGroupToContent("Properties", propertiesContent);
AddGroupToContent("Methods", methodsContent);
@ -462,7 +496,7 @@ namespace ClassDiagram @@ -462,7 +496,7 @@ namespace ClassDiagram
if (classtype.InnerClasses.Count > 0)
{
DrawableItemsStack nestedTypesContent = PerpareNestedTypesContent();
InteractiveItemsStack nestedTypesContent = PerpareNestedTypesContent();
AddGroupToContent("Nested Types", nestedTypesContent);
}
}
@ -470,14 +504,17 @@ namespace ClassDiagram @@ -470,14 +504,17 @@ namespace ClassDiagram
protected virtual void PrepareFrame ()
{
ActualHeight = classItemContainer.GetAbsoluteContentHeight();
if (Container != null) return;
shadowpath = new GraphicsPath();
if (RoundedCorners)
{
int radius = CornerRadius;
shadowpath.AddArc(ActualWidth-radius + 4, 3, radius, radius, 300, 60);
shadowpath.AddArc(ActualWidth-radius + 4, ActualHeight-radius + 3, radius, radius, 0, 90);
shadowpath.AddArc(ActualWidth-radius + 4, ActualHeight - radius + 3, radius, radius, 0, 90);
shadowpath.AddArc(4, ActualHeight-radius + 3, radius, radius, 90, 45);
shadowpath.AddArc(ActualWidth-radius, ActualHeight-radius, radius, radius, 90, -90);
shadowpath.AddArc(ActualWidth-radius, ActualHeight - radius, radius, radius, 90, -90);
}
else
{
@ -504,14 +541,16 @@ namespace ClassDiagram @@ -504,14 +541,16 @@ namespace ClassDiagram
GraphicsState state = graphics.Save();
graphics.TranslateTransform (AbsoluteX, AbsoluteY);
//Draw Shadow
graphics.FillPath(CanvasItem.ShadowBrush, shadowpath);
if (Container == null)
{
//Draw Shadow
graphics.FillPath(CanvasItem.ShadowBrush, shadowpath);
}
classItemContainer.Width = Width;
classItemContainer.Height = Height;
graphics.Restore(state);
classItemContainer.DrawToGraphics(graphics);
//Draw interfaces lollipops
@ -620,7 +659,8 @@ namespace ClassDiagram @@ -620,7 +659,8 @@ namespace ClassDiagram
public void Dispose()
{
grad.Dispose();
shadowpath.Dispose();
if (shadowpath != null)
shadowpath.Dispose();
}
public override string ToString()
@ -628,39 +668,4 @@ namespace ClassDiagram @@ -628,39 +668,4 @@ namespace ClassDiagram
return "ClasCanvasItem: " + classtype.Name;
}
}
/// <summary>
/// Test interface
/// </summary>
public interface TestInterface
{
}
/// <summary>
/// Test class.
/// </summary>
public class TestClass_Long_Title : TestInterface
{
/// <summary>
/// A method with a common test name and one parameter.
/// </summary>
public void foo(string str) {}
/// <summary>
/// Some test field.
/// </summary>
public int bar;
/// <summary>
/// The getter for the 'bar' field.
/// </summary>
public int Bar { get { return bar; } }
/// <summary>
/// A simple test event.
/// </summary>
public event EventHandler stupid = delegate {};
}
}

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

@ -27,15 +27,61 @@ using Tools.Diagrams.Drawables; @@ -27,15 +27,61 @@ using Tools.Diagrams.Drawables;
namespace ClassDiagram
{
// TODO - should look at the Invoke method and extract the parameters and return type.
// this is the only information that need to be shown. The parameters should
// be listed in the form of paramName : paramType, as for the return type, still
// need to figure that out ;)
public class DelegateCanvasItem : ClassCanvasItem
// TODO - perhaps abandon this base class and implement styles mechanism instead?
public class EnumDelegateCanvasItem : ClassCanvasItem
{
public DelegateCanvasItem (IClass ct) : base (ct) {}
public EnumDelegateCanvasItem (IClass ct) : base (ct) {}
private InteractiveItemsStack items = new InteractiveItemsStack();
private DrawableItemsStack parameters = new DrawableItemsStack();
public InteractiveItemsStack Items {
get { return items; }
}
protected override DrawableRectangle InitContentBackground()
{
if (RoundedCorners)
{
int radius = CornerRadius;
return new DrawableRectangle(ContentBG, null, 0, 0, radius, 0);
}
else
return new DrawableRectangle(ContentBG, null, 0, 0, 0, 0);
}
protected override DrawableItemsStack InitContentContainer(params IDrawableRectangle[] items)
{
DrawableItemsStack decorator = new DrawableItemsStack();
decorator.OrientationAxis = Axis.X;
DrawableRectangle rect;
if (RoundedCorners)
{
int radius = CornerRadius;
rect = new DrawableRectangle(TitleBG, null, 0, 0, 0, radius);
}
else
{
rect = new DrawableRectangle(TitleBG, null, 0, 0, 0, 0);
}
rect.Width = 20;
decorator.Add(rect);
decorator.Add(base.InitContentContainer(items));
return decorator;
}
protected override IDrawableRectangle InitContent()
{
items.Border = 5;
items.OrientationAxis = Axis.Y;
return items;
}
}
public class DelegateCanvasItem : EnumDelegateCanvasItem
{
public DelegateCanvasItem (IClass ct) : base (ct) {}
static Color titlesBG = Color.FromArgb(255, 237, 219, 221);
protected override Color TitleBackground
@ -43,22 +89,21 @@ namespace ClassDiagram @@ -43,22 +89,21 @@ namespace ClassDiagram
get { return titlesBG; }
}
protected override IDrawableRectangle InitContent()
static Brush contentBG = new SolidBrush(Color.FromArgb(255, 247, 240, 240));
protected override Brush ContentBG
{
parameters.Border = 5;
parameters.OrientationAxis = Axis.Y;
return parameters;
get { return contentBG; }
}
protected override void PrepareMembersContent()
{
parameters.Clear();
Items.Clear();
IMethod invokeMethod = RepresentedClassType.SearchMember("Invoke", RepresentedClassType.ProjectContent.Language) as IMethod;
IAmbience ambience = GetAmbience();
foreach (IParameter par in invokeMethod.Parameters)
{
TextSegment ts = new TextSegment(Graphics, par.Name + " : " + ambience.Convert(par.ReturnType), MemberFont, true);
parameters.Add(ts);
Items.Add(ts);
}
}

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

@ -24,11 +24,11 @@ using Tools.Diagrams.Drawables; @@ -24,11 +24,11 @@ using Tools.Diagrams.Drawables;
namespace ClassDiagram
{
public class EnumCanvasItem : ClassCanvasItem
public class EnumCanvasItem : EnumDelegateCanvasItem
{
public EnumCanvasItem (IClass ct) : base (ct) {}
private DrawableItemsStack fields = new DrawableItemsStack();
private InteractiveItemsStack fields = new InteractiveItemsStack();
static Color titlesBG = Color.FromArgb(255, 221, 214, 239);
protected override Color TitleBackground
@ -41,17 +41,10 @@ namespace ClassDiagram @@ -41,17 +41,10 @@ namespace ClassDiagram
get { return false; }
}
protected override IDrawableRectangle InitContent()
{
fields.Border = 5;
fields.OrientationAxis = Axis.Y;
return fields;
}
protected override void PrepareMembersContent ()
{
fields.Clear();
PrepareMembersContent <IField> (RepresentedClassType.Fields, fields);
Items.Clear();
PrepareMembersContent <IField> (RepresentedClassType.Fields, Items);
}
protected override XmlElement CreateXmlElement(XmlDocument doc)

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

@ -104,7 +104,7 @@ namespace ClassDiagram @@ -104,7 +104,7 @@ namespace ClassDiagram
protected override void FillXmlPositionElement(XmlElement position, XmlDocument document)
{
base.FillXmlPositionElement(position, document);
position.SetAttribute("Height", Height.ToString(CultureInfo.InvariantCulture));
position.SetAttribute("Height", (Height/100).ToString(CultureInfo.InvariantCulture));
}
public override void LoadFromXml (XPathNavigator navigator)
@ -116,7 +116,7 @@ namespace ClassDiagram @@ -116,7 +116,7 @@ namespace ClassDiagram
protected override void ReadXmlPositionElement(XPathNavigator navigator)
{
base.ReadXmlPositionElement(navigator);
Height = float.Parse(navigator.GetAttribute("Height", ""), CultureInfo.InvariantCulture);
Height = 100 * float.Parse(navigator.GetAttribute("Height", ""), CultureInfo.InvariantCulture);
}
#endregion

12
src/AddIns/DisplayBindings/ClassDiagram/DiagramRouter/BaseRectangle.cs

@ -21,6 +21,8 @@ namespace Tools.Diagrams @@ -21,6 +21,8 @@ namespace Tools.Diagrams
private IRectangle container;
public string Name;
public IRectangle Container
{
get { return container; }
@ -95,10 +97,6 @@ namespace Tools.Diagrams @@ -95,10 +97,6 @@ namespace Tools.Diagrams
set
{
w = value;
if (float.IsNaN(w))
{
}
OnSizeChanged();
OnWidthChanged();
}
@ -186,5 +184,11 @@ namespace Tools.Diagrams @@ -186,5 +184,11 @@ namespace Tools.Diagrams
public event EventHandler HeightChanged = delegate {};
public event EventHandler ActualWidthChanged = delegate {};
public event EventHandler ActualHeightChanged = delegate {};
public override string ToString()
{
return Name + " (" + this.GetType().ToString() + ")";
}
}
}

2
src/AddIns/DisplayBindings/ClassDiagram/DiagramRouter/Drawables/DrawableItemsStack.cs

@ -24,7 +24,7 @@ namespace Tools.Diagrams.Drawables @@ -24,7 +24,7 @@ namespace Tools.Diagrams.Drawables
public class DrawableItemsStack<T>
: ItemsStack<T>, IDrawableRectangle
where T : IDrawableRectangle
where T : IDrawable, IRectangle
{
public void DrawToGraphics(Graphics graphics)
{

9
src/AddIns/DisplayBindings/ClassDiagram/DiagramRouter/Drawables/HeaderedItem.cs

@ -47,17 +47,17 @@ namespace Tools.Diagrams.Drawables @@ -47,17 +47,17 @@ namespace Tools.Diagrams.Drawables
headerExpanded.HeightChanged += delegate { content.Y = headerExpanded.GetAbsoluteContentHeight(); };
}
protected IDrawableRectangle HeaderCollapsed
public IDrawableRectangle HeaderCollapsed
{
get { return headerCollapsed; }
}
protected IDrawableRectangle HeaderExpanded
public IDrawableRectangle HeaderExpanded
{
get { return headerExpanded; }
}
protected IDrawableRectangle Content
public IDrawableRectangle Content
{
get { return content; }
}
@ -141,7 +141,7 @@ namespace Tools.Diagrams.Drawables @@ -141,7 +141,7 @@ namespace Tools.Diagrams.Drawables
if (!collapsed)
{
width = Math.Max(width, headerExpanded.GetAbsoluteContentWidth());
width = Math.Max(width, content.GetAbsoluteContentWidth());
width = Math.Max(width, content.GetAbsoluteContentWidth() + content.Padding * 2);
}
else
width = headerCollapsed.GetAbsoluteContentWidth();
@ -156,6 +156,7 @@ namespace Tools.Diagrams.Drawables @@ -156,6 +156,7 @@ namespace Tools.Diagrams.Drawables
{
height = headerExpanded.GetAbsoluteContentHeight();
height += content.GetAbsoluteContentHeight();
height += content.Padding * 2;
}
else
{

15
src/AddIns/DisplayBindings/ClassDiagram/DiagramRouter/ItemsStack.cs

@ -138,6 +138,8 @@ namespace Tools.Diagrams @@ -138,6 +138,8 @@ namespace Tools.Diagrams
if (!IsItemWidthValid(r))
r.ActualWidth = Math.Max(spacePerUndefined - r.Border * 2, 0);
else if (float.IsNaN(r.ActualWidth) || r.ActualWidth < 0)
r.ActualWidth = r.Width;
w += r.ActualWidth + spacing + r.Border * 2;
x = w;
@ -225,7 +227,9 @@ namespace Tools.Diagrams @@ -225,7 +227,9 @@ namespace Tools.Diagrams
if (!IsItemHeightValid(r))
r.ActualHeight = Math.Max (spacePerUndefined - r.Border * 2, 0);
else if (float.IsNaN(r.ActualHeight) || r.ActualHeight < 0)
r.ActualHeight = r.Height;
h += r.ActualHeight + spacing + r.Border * 2;
y = h;
}
@ -245,10 +249,11 @@ namespace Tools.Diagrams @@ -245,10 +249,11 @@ namespace Tools.Diagrams
foreach (IRectangle r in items)
{
r.X = r.Border + Padding;
r.Y = r.Border + Padding;
r.ActualWidth = w - (r.Border + Padding) * 2;
r.ActualHeight = h - (r.Border + Padding) * 2;
float bp = r.Border + Padding;
r.X = bp;
r.Y = bp;
r.ActualWidth = w - bp * 2;
r.ActualHeight = h - bp * 2;
}
dontHandleResize = true;

Loading…
Cancel
Save