Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
 public void ShrinkAllWidths()
 {
     foreach (CanvasItemData item in itemsList)
     {
         ClassCanvasItem classitem = item.Item as ClassCanvasItem;
         if (classitem != null)
         {
             classitem.Width = 0;
         }
     }
     LayoutChanged(this, EventArgs.Empty);
 }
Example #5
0
 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);
 }
Example #6
0
 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);
        }
Example #8
0
        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;
        }