private void AddGroupToContent(string title, InteractiveItemsStack groupContent) { if (groupContent != null) { InteractiveHeaderedItem tg = PrepareGroup(title, groupContent); groupNames.Add(tg, title); groupsByName.Add(title, tg); groups.Add(tg); } }
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; if (RoundedCorners) { int radius = CornerRadius; titlesBackgroundCollapsed = new DrawableRectangle(grad, null, radius, radius, radius, radius); titlesBackgroundExpanded = new DrawableRectangle(grad, null, radius, radius, 0, 0); } else { titlesBackgroundCollapsed = new DrawableRectangle(grad, null, 0, 0, 0, 0); titlesBackgroundExpanded = new DrawableRectangle(grad, null, 0, 0, 0, 0); } titles.Border = 5; titlesCollapsed.Add(titlesBackgroundCollapsed); titlesCollapsed.Add(titles); titlesCollapsed.OrientationAxis = Axis.Z; titlesExpanded.Add(titlesBackgroundExpanded); titlesExpanded.Add(titles); titlesExpanded.OrientationAxis = Axis.Z; if (classtype != null) { typeclass = classtype.Modifiers.ToString(); typeclass += " " + classtype.ClassType.ToString(); } }
protected InteractiveHeaderedItem PrepareGroup(string title, IDrawableRectangle content) { #region Prepare Group Container DrawableItemsStack headerPlus = new DrawableItemsStack(); DrawableItemsStack headerMinus = new DrawableItemsStack(); headerPlus.OrientationAxis = Axis.X; headerMinus.OrientationAxis = Axis.X; #endregion #region Create Header TextSegment titleSegment = new TextSegment(Graphics, title, GroupTitleFont, true); PlusShape plus = new PlusShape(); plus.Border = 3; headerPlus.Add(plus); headerPlus.Add(titleSegment); MinusShape minus = new MinusShape(); minus.Border = 3; headerMinus.Add(minus); headerMinus.Add(titleSegment); DrawableItemsStack headerCollapsed = new DrawableItemsStack(); DrawableItemsStack headerExpanded = new DrawableItemsStack(); headerCollapsed.OrientationAxis = Axis.Z; headerExpanded.OrientationAxis = Axis.Z; headerCollapsed.Add(new DrawableRectangle(InnerTitlesBackground, null)); headerCollapsed.Add(headerPlus); headerExpanded.Add(new DrawableRectangle(InnerTitlesBackground, null)); headerExpanded.Add(headerMinus); #endregion 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); }