public override void Run() { IProject p = ProjectService.CurrentProject; string filename = Path.Combine(p.Directory, p.Name+".cd"); if (p == null) return; /*if (p.IsFileInProject(filename)) { ProjectItem pi = p.Items.Find( delegate(ProjectItem pItem) { return pItem.FileName == filename; } ); } else*/ { //MessageBox.Show("Creating a new class diagram file named "+"\"+p.Directory+filename); ClassCanvas classcanvas = new ClassCanvas(); IProjectContent pc = ParserService.GetProjectContent(p); //float x = 20, y = 20; //float max_h = 0; foreach (IClass ct in pc.Classes) { ClassCanvasItem classitem = ClassCanvas.CreateItemFromType(ct); classcanvas.AddCanvasItem(classitem); } classcanvas.AutoArrange(); XmlDocument xmlDocument = classcanvas.WriteToXml(); FileUtility.ObservedSave( newFileName => SaveAndOpenNewClassDiagram(p, newFileName, xmlDocument), filename, FileErrorPolicy.ProvideAlternative ); } }
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); } }
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); }