public static ClassCanvasItem CreateItemFromType(IClass ct) { if (ct == null) { return(null); } ClassCanvasItem item = null; if (ct.ClassType == ClassType.Interface) { item = new InterfaceCanvasItem(ct); } else if (ct.ClassType == ClassType.Enum) { item = new EnumCanvasItem(ct); } else if (ct.ClassType == ClassType.Struct) { item = new StructCanvasItem(ct); } else if (ct.ClassType == ClassType.Delegate) { item = new DelegateCanvasItem(ct); } else { item = new ClassCanvasItem(ct); } item.Initialize(); return(item); }
public void LoadFromXml(IXPathNavigable doc, IProjectContent pc) { if (pc == null) { return; } if (doc == null) { return; } ClearCanvas(); XPathNavigator nav = doc.CreateNavigator(); XPathNodeIterator ni = nav.Select(@"/ClassDiagram/Class | /ClassDiagram/Struct | /ClassDiagram/Enum | /ClassDiagram/Interface | /ClassDiagram/Delegate"); while (ni.MoveNext()) { string typeName = ni.Current.GetAttribute("Name", ""); IClass ct = pc.GetClass(typeName, 0); ClassCanvasItem canvasitem = ClassCanvas.CreateItemFromType(ct); if (canvasitem != null) { canvasitem.LoadFromXml(ni.Current); AddCanvasItem(canvasitem); } } ni = nav.Select(@"/ClassDiagram/Comment"); while (ni.MoveNext()) { NoteCanvasItem note = new NoteCanvasItem(); note.LoadFromXml(ni.Current); AddCanvasItem(note); } }
public void RemoveCanvasItem(CanvasItem item) { itemsList.Remove(itemsData[item]); Stack <Route> routesToRemove = new Stack <Route>(); foreach (Route r in diagramRouter.Routes) { if (r.From == item || r.To == item) { routesToRemove.Push(r); } } foreach (Route r in routesToRemove) { diagramRouter.RemoveRoute(r); } diagramRouter.RemoveItem(item); ClassCanvasItem classItem = item as ClassCanvasItem; if (classItem != null) { classesToData.Remove(classItem.RepresentedClassType); } LayoutChanged(this, EventArgs.Empty); }
public void ShrinkAllWidths() { foreach (CanvasItemData item in itemsList) { ClassCanvasItem classitem = item.Item as ClassCanvasItem; if (classitem != null) { classitem.Width = 0; } } LayoutChanged(this, EventArgs.Empty); }
public void MatchAllWidths() { foreach (CanvasItemData item in itemsList) { ClassCanvasItem classitem = item.Item as ClassCanvasItem; if (classitem != null) { classitem.Width = classitem.GetAbsoluteContentWidth(); } } LayoutChanged(this, EventArgs.Empty); }
public void ExpandAll() { foreach (CanvasItemData item in itemsList) { ClassCanvasItem classitem = item.Item as ClassCanvasItem; if (classitem != null) { classitem.Collapsed = false; } } LayoutChanged(this, EventArgs.Empty); }
private InteractiveItemsStack PrepareNestedTypesContent() { InteractiveItemsStack innerItems = new InteractiveItemsStack(); innerItems.OrientationAxis = Axis.Y; innerItems.Spacing = 10; innerItems.Padding = 10; foreach (IClass ct in classtype.InnerClasses) { ClassCanvasItem innerItem = ClassCanvas.CreateItemFromType(ct); innerItems.Add(innerItem); innerItem.LayoutChanged += HandleRedraw; } return(innerItems); }
public void AddCanvasItem(CanvasItem item) { diagramRouter.AddItem(item); CanvasItemData itemData = new CanvasItemData(item, SizeGripMouseEntered, SizeGripMouseLeft); itemsData[item] = itemData; ClassCanvasItem classItem = item as ClassCanvasItem; if (classItem != null) { classesToData.Add(classItem.RepresentedClassType, itemData); foreach (CanvasItemData ci in itemsList) { ClassCanvasItem cci = ci.Item as ClassCanvasItem; if (cci != null) { Route r = null; if (cci.RepresentedClassType == classItem.RepresentedClassType.BaseClass) { r = diagramRouter.AddRoute(item, cci); } else if (classItem.RepresentedClassType == cci.RepresentedClassType.BaseClass) { r = diagramRouter.AddRoute(cci, classItem); } if (r != null) { r.EndShape = new RouteInheritanceShape(); } } } } itemsList.AddLast(itemData); item.RedrawNeeded += HandleRedraw; item.LayoutChanged += HandleItemLayoutChange; item.PositionChanging += HandleItemPositionChange; item.SizeChanging += HandleItemSizeChange; }