private void Populate() { Font boldFont = new Font(Font, FontStyle.Bold); Font boldUnderlineFont = new Font(Font, FontStyle.Bold | FontStyle.Underline); RawShape centreShape = new RawEntity(shapeCanvas1, Entity.Name, boldFont, Entity); List <RawShape> level1Shapes = new List <RawShape>(); List <RawShape> level3Shapes = new List <RawShape>(); List <RawShape> rightAlignedShapes = new List <RawShape>(); if (Entity.Parent == null) { RawShape emptyParent = new RawShape(shapeCanvas1, "Add parent...", boldUnderlineFont) { BackColor1 = Color.White, BackColor2 = Color.White, BorderColor = Color.Gray, ForeColor = Color.Gray, FocusForeColor = Color.Blue, FocusBackColor1 = Color.WhiteSmoke, FocusBackColor2 = Color.White, FocusBorderColor = Color.DarkGray, Cursor = Cursors.Hand, OriginatingLineStyle = null, //new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow), Tag = null }; emptyParent.MouseClick += new MouseEventHandler(emptyParent_MouseClick); level1Shapes.Add(emptyParent); } else { RawEntity parentShape = new RawEntity(shapeCanvas1, Entity.Parent.Name, boldFont, Entity.Parent); parentShape.OriginatingLineStyle = new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow); parentShape.MouseClick += new MouseEventHandler(parentShape_MouseClick); level1Shapes.Add(parentShape); foreach (var table in Entity.Parent.MappedTables()) { RawTable tableShape = new RawTable(shapeCanvas1, table.Name, boldFont, table); tableShape.OriginatingLineStyle = new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow); tableShape.MouseClick += new MouseEventHandler(tableShape_MouseClick); rightAlignedShapes.Add(tableShape); } } foreach (var table in Entity.MappedTables()) { RawTable tableShape = new RawTable(shapeCanvas1, table.Name, boldFont, table); tableShape.OriginatingLineStyle = new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow); tableShape.MouseClick += new MouseEventHandler(tableShape_MouseClick); rightAlignedShapes.Add(tableShape); } foreach (Entity child in Entity.Children) { RawEntity childShape = new RawEntity(shapeCanvas1, child.Name, boldFont, child); childShape.OriginatingLineStyle = new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow); childShape.MouseClick += new MouseEventHandler(childShape_MouseClick); level3Shapes.Add(childShape); foreach (var table in child.MappedTables()) { RawTable tableShape = new RawTable(shapeCanvas1, table.Name, boldFont, table); tableShape.OriginatingLineStyle = new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow); tableShape.MouseClick += new MouseEventHandler(tableShape_MouseClick); rightAlignedShapes.Add(tableShape); } } #region Add empty child RawShape emptyChild = new RawShape(shapeCanvas1, "Add child...", boldUnderlineFont) { BackColor1 = Color.White, BackColor2 = Color.White, BorderColor = Color.Gray, ForeColor = Color.Gray, FocusForeColor = Color.Blue, FocusBackColor1 = Color.WhiteSmoke, FocusBackColor2 = Color.White, FocusBorderColor = Color.DarkGray, Cursor = Cursors.Hand, Tag = null, OriginatingLineStyle = null //new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow) }; emptyChild.MouseClick += new MouseEventHandler(emptyChild_MouseClick); //emptyChild.OriginatingLineStyle.MouseClick += new MouseEventHandler(OriginatingLineStyle_MouseClick); level3Shapes.Add(emptyChild); #endregion shapeCanvas1.BackColor = this.BackColor; shapeCanvas1.SwimLane1 = new ShapeCanvas.SwimLaneStyle(Color.FromArgb(100, 100, 100), Color.Black, Color.White, 90F, "Parent", ShapeCanvas.SwimLaneStyle.Styles.Line); shapeCanvas1.SwimLane2 = new ShapeCanvas.SwimLaneStyle(Color.FromArgb(100, 100, 100), Color.Black, Color.White, 90F, "Entity", ShapeCanvas.SwimLaneStyle.Styles.Line); shapeCanvas1.SwimLane3 = new ShapeCanvas.SwimLaneStyle(Color.FromArgb(100, 100, 100), Color.Black, Color.White, 90F, "Children", ShapeCanvas.SwimLaneStyle.Styles.Line); shapeCanvas1.SwimLane4 = new ShapeCanvas.SwimLaneStyle(Color.FromArgb(100, 100, 100), Color.Black, Color.White, 90F, "Mapped Tables", ShapeCanvas.SwimLaneStyle.Styles.Line); shapeCanvas1.BackColor = this.BackColor; shapeCanvas1.DrawVerticalSwimLanes(centreShape, level1Shapes, level3Shapes, rightAlignedShapes, "Parent", "Entity", "Children", "Mapped Tables"); }
private void Populate() { if (Entity == null || BusyPopulating) { return; } BusyPopulating = true; try { Slyce.Common.Utility.SuspendPainting(this); Cursor = Cursors.WaitCursor; #region Check for Table Per Sub-Class HasOneToOne = false; foreach (var directedRef in Entity.DirectedReferences) { if (ArchAngel.Interfaces.Cardinality.IsOneToOne(directedRef.FromEndCardinality, directedRef.ToEndCardinality)) { HasOneToOne = true; break; } } #endregion //shapeCanvasInheritance.main Font boldFont = new Font(Font, FontStyle.Bold); Font boldUnderlineFont = new Font(Font, FontStyle.Bold | FontStyle.Underline); CentreShape = new RawEntity(shapeCanvasInheritance, Entity.Name, boldFont, Entity); //centreShape.Cursor = Cursors.Hand; //centreShape.Click += new EventHandler(centreShape_OnClick); CentreShape.MouseClick += new MouseEventHandler(centreShape_MouseClick); List <RawShape> topLevelShapes = new List <RawShape>(); List <RawShape> bottomLevelShapes = new List <RawShape>(); if (Entity.Parent == null) { //if (HasOneToOne) //{ RawShape emptyParent = new RawShape(shapeCanvasInheritance, "Add parent...", boldUnderlineFont) { BackColor1 = Color.White, BackColor2 = Color.White, BorderColor = Color.Gray, ForeColor = Color.Gray, FocusForeColor = Color.Blue, FocusBackColor1 = Color.WhiteSmoke, FocusBackColor2 = Color.White, FocusBorderColor = Color.DarkGray, Cursor = Cursors.Hand, OriginatingLineStyle = new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow), Tag = null }; emptyParent.OriginatingLineStyle.ForeColor = Color.White; emptyParent.MouseClick += new MouseEventHandler(emptyParent_MouseClick); topLevelShapes.Add(emptyParent); //} } else { RawEntity parentShape = new RawEntity(shapeCanvasInheritance, Entity.Parent.Name, boldFont, Entity.Parent); parentShape.OriginatingLineStyle = new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow); parentShape.OriginatingLineStyle.MiddleImage = InfoImage; //parentShape.OriginatingLineStyle.MiddleImageClick += new MouseEventHandler(ParentOriginatingLineStyle_MiddleImageClick); parentShape.OriginatingLineStyle.ForeColor = Color.White; parentShape.OriginatingLineStyle.Parent = parentShape; parentShape.OriginatingLineStyle.MiddleText = GetInheritanceDisplayText(Entity); parentShape.Tag = Entity.Parent; parentShape.MouseClick += new MouseEventHandler(parentShape_MouseClick); parentShape.MouseDoubleClick += new MouseEventHandler(parentShape_MouseDoubleClick); parentShape.Cursor = Cursors.Hand; topLevelShapes.Add(parentShape); } #region Add empty child Slyce.Common.Controls.Diagramming.Shapes.RawShape emptyChild = new Slyce.Common.Controls.Diagramming.Shapes.RawShape(shapeCanvasInheritance, "Add child...", boldUnderlineFont) { BackColor1 = Color.White, BackColor2 = Color.White, BorderColor = Color.Gray, ForeColor = Color.Gray, FocusForeColor = Color.Blue, FocusBackColor1 = Color.WhiteSmoke, FocusBackColor2 = Color.White, FocusBorderColor = Color.DarkGray, Cursor = Cursors.Hand, Tag = null, OriginatingLineStyle = new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow) }; emptyChild.OriginatingLineStyle.ForeColor = Color.White; emptyChild.MouseClick += new MouseEventHandler(emptyChild_MouseClick); emptyChild.OriginatingLineStyle.MouseClick += new MouseEventHandler(OriginatingLineStyle_MouseClick); bottomLevelShapes.Add(emptyChild); #endregion foreach (Entity child in Entity.Children) { RawEntity childShape = new RawEntity(shapeCanvasInheritance, child.Name, boldFont, child); childShape.OriginatingLineStyle = new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow); childShape.OriginatingLineStyle.MiddleImage = InfoImage; //childShape.OriginatingLineStyle.MiddleImageClick += new MouseEventHandler(ChildOriginatingLineStyle_MiddleImageClick); childShape.OriginatingLineStyle.ForeColor = Color.White; childShape.OriginatingLineStyle.Parent = childShape; childShape.OriginatingLineStyle.MiddleText = GetInheritanceDisplayText(child); childShape.Tag = child; childShape.MouseClick += new MouseEventHandler(childShape_MouseClick); childShape.MouseDoubleClick += new MouseEventHandler(childShape_MouseDoubleClick); childShape.Cursor = Cursors.Hand; bottomLevelShapes.Add(childShape); } shapeCanvasInheritance.BackColor = this.BackColor; shapeCanvasInheritance.Height = this.Height; shapeCanvasInheritance.DrawThreeLayerVertical(CentreShape, topLevelShapes, bottomLevelShapes); var inheritanceType = EntityImpl.DetermineInheritanceTypeWithParent(Entity); mnuSetDiscriminatorForSubClass.Visible = inheritanceType == EntityImpl.InheritanceType.TablePerSubClass || inheritanceType == EntityImpl.InheritanceType.TablePerSubClassWithDiscriminator; } finally { this.AutoScrollPosition = ScrollPosition; Slyce.Common.Utility.ResumePainting(this); Cursor = Cursors.Default; BusyPopulating = false; } }
private void Populate() { if (Table == null || BusyPopulating) { return; } try { BusyPopulating = true; Slyce.Common.Utility.SuspendPainting(this); bool hasMultiSchemas = Table.Database.GetSchemas().Count() > 1; //HideAllFloatingToolstrips(); Cursor = Cursors.WaitCursor; Font boldFont = new Font(Font, FontStyle.Bold); Font subTextFont = new Font(Font.FontFamily, Font.Size - 0.6F, FontStyle.Regular); MainShape = new RawTable(shapeCanvas1, Table.Name, boldFont, CategoryFont, PropertyFont, Table); if (hasMultiSchemas) { MainShape.SubText = string.Format(" ({0}) ", Table.Schema); } MainShape.FontSubText = subTextFont; MainShape.Icon = Table.IsView ? ViewImage : TableImage; //MainShape.Enter += new EventHandler(centreShape_Enter); //MainShape.Leave += new EventHandler(centreShape_Leave); MainShape.MouseClick += new MouseEventHandler(centreShape_MouseClick); CategoryColumns.Parent = MainShape; CategoryColumns.Properties.Clear(); MainShape.Categories.Add(CategoryColumns); if (Table.Columns.Count > 0) { foreach (var column in Table.Columns) { RawProperty prop = new RawProperty(column.Name, column); if (column.InPrimaryKey) { prop.ImageColor = Color.OrangeRed; prop.ImageType = RawProperty.ImageTypes.Key; } prop.Click += new MouseEventHandler(Column_Click); prop.DoubleClick += new MouseEventHandler(Column_DoubleClick); CategoryColumns.Properties.Add(prop); } } List <RawShape> bottomLevelShapes = new List <RawShape>(); List <RawShape> rightAlignedShapes = new List <RawShape>(); Font boldUnderlineFont = new Font(Font, FontStyle.Bold | FontStyle.Underline); //TheEntity.Discriminator.RootGrouping. #region Mapped Entities if (ShowMappedEntities) { foreach (EntityImpl entity in MappedEntities.OrderBy(e => e.Name)) { RawEntity entityShape = new RawEntity(shapeCanvas1, entity.Name, boldFont, entity); CustomLineCap startCap = LineCaps.None; //.SolidArrow; CustomLineCap endCap = LineCaps.None; entityShape.OriginatingLineStyle.LineStyle = DashStyle.Solid; entityShape.Cursor = Cursors.Hand; //entityShape.OriginatingLineStyle.MiddleText = GetDiscriminatorText(entityShape); entityShape.OriginatingLineStyle.StartCap = startCap; entityShape.OriginatingLineStyle.EndCap = endCap; //entityShape.BackColor1 = Color.Blue; //entityShape.BackColor2 = Color.DarkBlue; //entityShape.RoundedCorners = false; entityShape.Tag = entity; entityShape.Icon = EntityImage; string discriminatorText = GetDiscriminatorText(entity); entityShape.OriginatingLineStyle.MiddleText = discriminatorText; if (string.IsNullOrEmpty(discriminatorText)) { entityShape.OriginatingLineStyle.MiddleImage = FilterImageDisabled; entityShape.OriginatingLineStyle.MiddleImageFocused = FilterImageDisabled; } else { entityShape.OriginatingLineStyle.MiddleImage = FilterImage; entityShape.OriginatingLineStyle.MiddleImageFocused = FilterImageFocused; } entityShape.OriginatingLineStyle.MouseClick += new MouseEventHandler(OriginatingLineStyle_MouseClick); entityShape.MouseClick += new MouseEventHandler(entityShape_MouseClick); entityShape.OriginatingLineStyle.MiddleImageClick += new MouseEventHandler(MapLine_MiddleImageClick); entityShape.OriginatingLineStyle.ForeColor = Color.White; entityShape.OriginatingLineStyle.DataObject = entity; entityShape.OriginatingLineStyle.ShowMiddleTextOnlyWhenFocused = true; //entityShape.Enter += new EventHandler(entityShape_Enter); //entityShape.Leave += new EventHandler(entityShape_Leave); entityShape.MouseDoubleClick += new MouseEventHandler(entityShape_MouseDoubleClick); //#region Setup discriminator //if (Table.Discriminator != null && Table.Discriminator.RootGrouping != null) //{ // ArchAngel.Providers.EntityModel.Model.DatabaseLayer.Discrimination.Condition firstCondition = Table.Discriminator.RootGrouping.Conditions.ElementAtOrDefault(0); // if (firstCondition != null) // { // IColumn column = firstCondition.Column; // ArchAngel.Providers.EntityModel.Model.DatabaseLayer.Discrimination.Operator op = firstCondition.Operator; // string exprText = firstCondition.ExpressionValue.Value; // } //} //#endregion //tableShape.OriginatingLineStyle.MiddleImageMouseOver += new EventHandler(OriginatingLineStyle_MiddleImageMouseOver); rightAlignedShapes.Add(entityShape); } #region Add empty entity Slyce.Common.Controls.Diagramming.Shapes.RawShape emptyEntity = new Slyce.Common.Controls.Diagramming.Shapes.RawShape(shapeCanvas1, "Map entity...", boldUnderlineFont) { BackColor1 = Color.White, BackColor2 = Color.White, BorderColor = Color.Gray, ForeColor = Color.Gray, FocusForeColor = Color.Blue, FocusBackColor1 = Color.WhiteSmoke, FocusBackColor2 = Color.White, FocusBorderColor = Color.DarkGray, Cursor = Cursors.Hand, Tag = null, RoundedCorners = false, OriginatingLineStyle = null //new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow) }; emptyEntity.MouseClick += new MouseEventHandler(emptyEntity_MouseClick); //emptyTable.OriginatingLineStyle.MouseClick += new MouseEventHandler(OriginatingLineStyle_MouseClick); rightAlignedShapes.Add(emptyEntity); #endregion } #endregion #region Relationships if (ShowRelatedtables) { foreach (Relationship relationship in Table.Relationships.OrderBy(r => r.PrimaryTable == Table ? r.ForeignTable.Name : r.PrimaryTable.Name)) { RawShape relatedTableShape; CustomLineCap startCap; CustomLineCap endCap; if (relationship.PrimaryTable == Table) { relatedTableShape = new RawTable(shapeCanvas1, relationship.ForeignTable.Name, boldFont, relationship.ForeignTable); if (hasMultiSchemas) { relatedTableShape.SubText = string.Format(" ({0}) ", relationship.ForeignTable.Schema); } string end1 = relationship.PrimaryKey.IsUnique ? "1" : "m"; endCap = relationship.ForeignKey.IsUnique ? LineCaps.One : LineCaps.Many; startCap = relationship.PrimaryKey.IsUnique ? LineCaps.One : LineCaps.Many; relatedTableShape.OriginatingLineStyle.MiddleImageClick += new MouseEventHandler(OriginatingLineStyle_MiddleImageClick2); relatedTableShape.Icon = relationship.ForeignTable.IsView ? ViewImage : TableImage; } else if (relationship.ForeignTable == Table) { relatedTableShape = new RawTable(shapeCanvas1, relationship.PrimaryTable.Name, boldFont, relationship.PrimaryTable); if (hasMultiSchemas) { relatedTableShape.SubText = string.Format(" ({0}) ", relationship.PrimaryTable.Schema); } string end1 = relationship.ForeignKey.IsUnique ? "1" : "m"; endCap = relationship.PrimaryKey.IsUnique ? LineCaps.One : LineCaps.Many; startCap = relationship.ForeignKey.IsUnique ? LineCaps.One : LineCaps.Many; relatedTableShape.OriginatingLineStyle.MiddleImageClick += new MouseEventHandler(OriginatingLineStyle_MiddleImageClick2); relatedTableShape.Icon = relationship.PrimaryTable.IsView ? ViewImage : TableImage; } else { throw new Exception("What the...??!"); } relatedTableShape.FontSubText = subTextFont; if (relationship.IsUserDefined) { relatedTableShape.OriginatingLineStyle.LineStyle = DashStyle.Dash; relatedTableShape.OriginatingLineStyle.LineColor = Color.Yellow; } else { relatedTableShape.OriginatingLineStyle.LineStyle = DashStyle.Solid; } relatedTableShape.Cursor = Cursors.Hand; relatedTableShape.OriginatingLineStyle.StartCap = startCap; relatedTableShape.OriginatingLineStyle.EndCap = endCap; relatedTableShape.OriginatingLineStyle.DataObject = relationship; relatedTableShape.OriginatingLineStyle.ForeColor = Color.White; relatedTableShape.OriginatingLineStyle.MiddleImage = InfoImage; relatedTableShape.MouseClick += new MouseEventHandler(referencedEntityShape_MouseClick); relatedTableShape.MouseDoubleClick += new MouseEventHandler(referencedEntityShape_MouseDoubleClick); bottomLevelShapes.Add(relatedTableShape); } // Add empty relationship RawShape emptyTable = new RawShape(shapeCanvas1, "Add relationship...", boldUnderlineFont) { BackColor1 = Color.White, BackColor2 = Color.White, BorderColor = Color.Gray, ForeColor = Color.Gray, FocusForeColor = Color.Blue, FocusBackColor1 = Color.WhiteSmoke, FocusBackColor2 = Color.White, FocusBorderColor = Color.DarkGray, Cursor = Cursors.Hand, OriginatingLineStyle = null, Tag = null }; emptyTable.MouseClick += new MouseEventHandler(emptyTable_MouseClick); bottomLevelShapes.Add(emptyTable); } #endregion shapeCanvas1.SwimLane1 = new ShapeCanvas.SwimLaneStyle(Color.FromArgb(79, 124, 205), Color.Black, Color.White, 0F, "Related Tables", ShapeCanvas.SwimLaneStyle.Styles.Fill); shapeCanvas1.SwimLane3 = new ShapeCanvas.SwimLaneStyle(Color.FromArgb(79, 124, 205), Color.Black, Color.White, 180F, "Mapped Entities", ShapeCanvas.SwimLaneStyle.Styles.Fill); shapeCanvas1.SwimLane4 = new ShapeCanvas.SwimLaneStyle(Color.FromArgb(79, 124, 205), Color.Black, Color.White, 90F, "Mapped Entities", ShapeCanvas.SwimLaneStyle.Styles.Fill); shapeCanvas1.BackColor = this.BackColor; //shapeCanvas1.DrawStar(centreShape, outerShapes); //shapeCanvas1.DrawThreeLayerHorizontal(centreShape, null, outerShapes, false); shapeCanvas1.Height = this.Height; //shapeCanvas1.DrawThreeLayerVertical(centreShape, null, bottomLevelShapes, rightAlignedShapes); shapeCanvas1.KeepMainShapeCentered = true; shapeCanvas1.DrawThreeLayerHorizontal(MainShape, bottomLevelShapes, rightAlignedShapes, KeepMainShapeFull); //shapeCanvas1.Focus(); } finally { this.AutoScrollPosition = ScrollPosition; Slyce.Common.Utility.ResumePainting(this); Cursor = Cursors.Default; BusyPopulating = false; this.Focus(); shapeCanvas1.Focus(); } }
private void Draw() { if (ComponentSpecification == null) { return; } Cursor = Cursors.WaitCursor; Font boldFont = new Font(Font, FontStyle.Bold); MainShape = new RawComponent(shapeCanvas1, ComponentSpecification.Name, boldFont, ComponentSpecification); MainShape.Categories.Clear(); RawCategory cat = new RawCategory("Properties", Font, MainShape); MainShape.Categories.Add(cat); foreach (var x in ComponentSpecification.Properties) { //RawProperty prop = new RawProperty(string.Format("{0} [{1}]", x.Name, x.Type), x); RawProperty prop = new RawProperty(x.Name, x); cat.Properties.Add(prop); } //centreShape.Icon = EntityImage; //centreShape.Enter += new EventHandler(centreShape_Enter); //centreShape.Leave += new EventHandler(centreShape_Leave); Font boldUnderlineFont = new Font(Font, FontStyle.Bold | FontStyle.Underline); List <RawShape> topLevelShapes = new List <RawShape>(); List <RawShape> rightAlignedShapes = new List <RawShape>(); #region References foreach (ComponentImpl component in ComponentSpecification.ImplementedComponents) { RawEntity referencedEntityShape; CustomLineCap startCap; CustomLineCap endCap; referencedEntityShape = new RawEntity(shapeCanvas1, component.ParentEntity.Name, boldFont, component.ParentEntity); //string end1 = ArchAngel.Interfaces.Cardinality.One.Equals(reference.Cardinality2) ? "1" : "m"; //startCap = ArchAngel.Interfaces.Cardinality.One.Equals(reference.Cardinality2) ? LineCaps.One : LineCaps.Many; //endCap = ArchAngel.Interfaces.Cardinality.One.Equals(reference.Cardinality1) ? LineCaps.One : LineCaps.Many; referencedEntityShape.OriginatingLineStyle.EndTextDataMember = "Name"; //referencedEntityShape.OriginatingLineStyle.EndTextDataMember = "End2Name"; //referencedEntityShape.OriginatingLineStyle.StartImageClick += new LinkLine.MouseEndDelegate(OriginatingLineStyle_StartImageClick); //referencedEntityShape.OriginatingLineStyle.EndImageClick += new LinkLine.MouseEndDelegate(OriginatingLineStyle_EndImageClick); //referencedEntityShape.OriginatingLineStyle.MouseOverEnd1 += new LinkLine.MouseOverEndDelegate(OriginatingLineStyle_MouseOverEnd2); //referencedEntityShape.OriginatingLineStyle.MouseOverEnd2 += new LinkLine.MouseOverEndDelegate(OriginatingLineStyle_MouseOverEnd1); referencedEntityShape.Icon = EntityImage; referencedEntityShape.OriginatingLineStyle.LineStyle = DashStyle.Solid; //referencedEntityShape.OriginatingLineStyle.StartCap = startCap; //referencedEntityShape.OriginatingLineStyle.EndCap = endCap; referencedEntityShape.OriginatingLineStyle.DataObject = component; referencedEntityShape.OriginatingLineStyle.ForeColor = Color.White; referencedEntityShape.OriginatingLineStyle.DefaultEndText = ""; //referencedEntityShape.OriginatingLineStyle.StartImage = EditImage; //referencedEntityShape.OriginatingLineStyle.EndImage = EditImage; referencedEntityShape.OriginatingLineStyle.MiddleImage = InfoImage; referencedEntityShape.OriginatingLineStyle.MiddleImageClick += new MouseEventHandler(OriginatingLineStyle_MiddleImageClick); referencedEntityShape.MouseDoubleClick += new MouseEventHandler(referencedEntityShape_MouseDoubleClick); referencedEntityShape.MouseClick += new MouseEventHandler(referencedEntityShape_MouseClick); referencedEntityShape.Cursor = Cursors.Hand; topLevelShapes.Add(referencedEntityShape); } // Add empty reference RawShape emptyReference = new RawShape(shapeCanvas1, "Add entity...", boldUnderlineFont) { BackColor1 = Color.White, BackColor2 = Color.White, BorderColor = Color.Gray, ForeColor = Color.Gray, FocusForeColor = Color.Blue, FocusBackColor1 = Color.WhiteSmoke, FocusBackColor2 = Color.White, FocusBorderColor = Color.DarkGray, Cursor = Cursors.Hand, OriginatingLineStyle = null, // new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow), Tag = null }; //emptyReference.OriginatingLineStyle.ForeColor = Color.White; emptyReference.MouseClick += new MouseEventHandler(emptyReference_MouseClick); topLevelShapes.Add(emptyReference); #endregion shapeCanvas1.SwimLane1 = new ShapeCanvas.SwimLaneStyle(Color.Gray, Color.Black, Color.White, 180F, "Used By (Entities)", ShapeCanvas.SwimLaneStyle.Styles.Fill); //shapeCanvas1.SwimLane3 = new ShapeCanvas.SwimLaneStyle(Color.FromArgb(79, 124, 205), Color.Black, Color.White, 0F, "Mapped Tables", ShapeCanvas.SwimLaneStyle.Styles.Fill); shapeCanvas1.BackColor = this.BackColor; shapeCanvas1.Height = this.Height; shapeCanvas1.KeepMainShapeCentered = true; shapeCanvas1.DrawThreeLayerHorizontal(MainShape, topLevelShapes, rightAlignedShapes, KeepMainShapeFull); Cursor = Cursors.Default; }
private void DrawThreeLayers() { if (Entity == null) { return; } Cursor = Cursors.WaitCursor; Font boldFont = new Font(Font, FontStyle.Bold); Font boldUnderlineFont = new Font(Font, FontStyle.Bold | FontStyle.Underline); RawShape centreShape = new RawEntity(Entity.Name, boldFont, Entity); centreShape.MouseClick += new MouseEventHandler(centreShape_MouseClick); List <RawShape> topLevelShapes = new List <RawShape>(); List <RawShape> bottomLevelShapes = new List <RawShape>(); foreach (ReferenceImpl reference in Entity.References) { RawShape referencedEntityShape; CustomLineCap startCap; CustomLineCap endCap; if (reference.Entity1 == Entity) { referencedEntityShape = new RawEntity(reference.Entity2.Name, boldFont, reference.Entity2); string end1 = ArchAngel.Interfaces.Cardinality.One.Equals(reference.Cardinality1) ? "1" : "m"; startCap = ArchAngel.Interfaces.Cardinality.One.Equals(reference.Cardinality1) ? LineCaps.One : LineCaps.Many; endCap = ArchAngel.Interfaces.Cardinality.One.Equals(reference.Cardinality2) ? LineCaps.One : LineCaps.Many; referencedEntityShape.OriginatingLineStyle.StartTextDataMember = "End2Name"; referencedEntityShape.OriginatingLineStyle.EndTextDataMember = "End1Name"; referencedEntityShape.OriginatingLineStyle.MouseOverEnd1 += new LinkLine.MouseEndDelegate(OriginatingLineStyle_MouseOverEnd2); referencedEntityShape.OriginatingLineStyle.MouseOverEnd2 += new LinkLine.MouseEndDelegate(OriginatingLineStyle_MouseOverEnd1); } else if (reference.Entity2 == Entity) { referencedEntityShape = new RawEntity(reference.Entity1.Name, boldFont, reference.Entity1); string end1 = ArchAngel.Interfaces.Cardinality.One.Equals(reference.Cardinality2) ? "1" : "m"; startCap = ArchAngel.Interfaces.Cardinality.One.Equals(reference.Cardinality2) ? LineCaps.One : LineCaps.Many; endCap = ArchAngel.Interfaces.Cardinality.One.Equals(reference.Cardinality1) ? LineCaps.One : LineCaps.Many; referencedEntityShape.OriginatingLineStyle.StartTextDataMember = "End1Name"; referencedEntityShape.OriginatingLineStyle.EndTextDataMember = "End2Name"; referencedEntityShape.OriginatingLineStyle.MouseOverEnd1 += new LinkLine.MouseEndDelegate(OriginatingLineStyle_MouseOverEnd1); referencedEntityShape.OriginatingLineStyle.MouseOverEnd2 += new LinkLine.MouseEndDelegate(OriginatingLineStyle_MouseOverEnd2); } else { throw new Exception("What the...??!"); } referencedEntityShape.OriginatingLineStyle.LineStyle = DashStyle.Solid; referencedEntityShape.OriginatingLineStyle.StartCap = startCap; referencedEntityShape.OriginatingLineStyle.EndCap = endCap; referencedEntityShape.OriginatingLineStyle.DataObject = reference; referencedEntityShape.OriginatingLineStyle.ForeColor = Color.White; referencedEntityShape.OriginatingLineStyle.DefaultEndText = "not set"; bottomLevelShapes.Add(referencedEntityShape); } // Add empty reference RawShape emptyReference = new RawShape("Add reference...", boldUnderlineFont) { BackColor1 = Color.White, BackColor2 = Color.White, BorderColor = Color.Gray, ForeColor = Color.Gray, FocusForeColor = Color.Blue, FocusBackColor1 = Color.WhiteSmoke, FocusBackColor2 = Color.White, FocusBorderColor = Color.DarkGray, Cursor = Cursors.Hand, OriginatingLineStyle = null,// new LinkLine(boldFont, DashStyle.Dot, "", "", "", LineCaps.None, LineCaps.SolidArrow), Tag = null }; //emptyReference.OriginatingLineStyle.ForeColor = Color.White; emptyReference.MouseClick += new MouseEventHandler(emptyReference_MouseClick); bottomLevelShapes.Add(emptyReference); //if (vertical) // canvas1.DrawThreeLayerVertical(centreShape, topLevelShapes, bottomLevelShapes); //else shapeCanvas1.BackColor = this.BackColor; //shapeCanvas1.DrawThreeLayerHorizontal(centreShape, topLevelShapes, bottomLevelShapes, true); shapeCanvas1.Height = this.Height; //shapeCanvas1.DrawStar(centreShape, bottomLevelShapes); shapeCanvas1.KeepMainShapeFull = KeepMainShapeFull; shapeCanvas1.DrawThreeLayerVertical(centreShape, null, bottomLevelShapes); Cursor = Cursors.Default; }