public EditTernaryRelationship(RelationshipShape relationship) { InitializeComponent(); Relationship = new RelationshipShape(relationship.sName, new Point(panelDoubleBuffered1.Width / 2, panelDoubleBuffered1.Height / 2), relationship.type); SelectedEntity1 = new EntityShape(relationship.cardinalities[0].Entity.sName, new Point(panelDoubleBuffered1.Width / 2, ThongSo.ShapeH / 2), relationship.cardinalities[0].Entity.type); SelectedEntity2 = new EntityShape(relationship.cardinalities[1].Entity.sName, new Point(panelDoubleBuffered1.Width / 2 - ThongSo.ShapeW * 3/2, panelDoubleBuffered1.Height - ThongSo.ShapeH/2), relationship.cardinalities[1].Entity.type); SelectedEntity3 = new EntityShape(relationship.cardinalities[2].Entity.sName, new Point(panelDoubleBuffered1.Width / 2 + ThongSo.ShapeW * 3/2, panelDoubleBuffered1.Height - ThongSo.ShapeH/2), relationship.cardinalities[2].Entity.type); cardi1 = Relationship.CreateCardinality(SelectedEntity1, relationship.cardinalities[0].MinCardinality, relationship.cardinalities[0].MaxCardinality); cardi2 = Relationship.CreateCardinality(SelectedEntity2, relationship.cardinalities[1].MinCardinality, relationship.cardinalities[1].MaxCardinality); cardi3 = Relationship.CreateCardinality(SelectedEntity3, relationship.cardinalities[2].MinCardinality, relationship.cardinalities[2].MaxCardinality); panelDoubleBuffered1.Controls.Add(Relationship); panelDoubleBuffered1.Controls.Add(SelectedEntity1); panelDoubleBuffered1.Controls.Add(SelectedEntity2); panelDoubleBuffered1.Controls.Add(SelectedEntity3); panelDoubleBuffered1.Refresh(); int min1, max1, min2, max2, min3, max3; min1 = Relationship.cardinalities[0].MinCardinality; max1 = Relationship.cardinalities[0].MaxCardinality; min2 = Relationship.cardinalities[1].MinCardinality; max2 = Relationship.cardinalities[1].MaxCardinality; min3 = Relationship.cardinalities[2].MinCardinality; max3 = Relationship.cardinalities[2].MaxCardinality; setCardinality(min1, max1, imageComboBoxEdit1); setCardinality(min2, max2, imageComboBoxEdit2); setCardinality(min3, max3, imageComboBoxEdit3); showText(); }
public void UpdateCardinalityPosition() { for (int i = 0; i < 4; i++) { //update all cardinality of this entity for (int j = 0; j < this.cardinalities[i].Count; j++) { CardinalityShape cardi = this.cardinalities[i][j]; RelationshipShape rel = cardi.Relationship; int oldEdgeCardiPlace = i + 1; int newEdgeCardiPlace = DrawingSupport.CalculateCardiDirection(this, rel); //Chổ này làm kỹ, không remove ra rồi add đại vô được //không thôi nó giựt wài ghét lắm //Nếu vị trí mới tính được khác vị trí cũ if (oldEdgeCardiPlace != newEdgeCardiPlace) { //remove old and add new this.cardinalities[oldEdgeCardiPlace - 1].Remove(cardi); int index = CalculateCardiPosition(cardi, newEdgeCardiPlace); this.cardinalities[newEdgeCardiPlace - 1].Insert(index, cardi); } else //Nếu vẫn là vị trí cũ, thì tính lại thứ tự trong vị trí đó { //just update the position for (int k = 0; k < this.cardinalities[oldEdgeCardiPlace - 1].Count - 1; k++) { if (oldEdgeCardiPlace == 1 || oldEdgeCardiPlace == 3) //Up hoặc down thì so sánh x { if (this.cardinalities[oldEdgeCardiPlace - 1][k].Relationship.Location.X > this.cardinalities[oldEdgeCardiPlace - 1][k + 1].Relationship.Location.X) { this.cardinalities[oldEdgeCardiPlace - 1].Reverse(k, 2); } } else //right hoặc left thì so sánh y { if (this.cardinalities[oldEdgeCardiPlace - 1][k].Relationship.Location.Y > this.cardinalities[oldEdgeCardiPlace - 1][k + 1].Relationship.Location.Y) { this.cardinalities[oldEdgeCardiPlace - 1].Reverse(k, 2); } } } } } } }
public AddCardinality(RelationshipShape relationship) { InitializeComponent(); Relationship = new RelationshipShape(relationship.sName, new Point(panelDoubleBuffered1.Width / 2, panelDoubleBuffered1.Height / 2), relationship.type); SelectedEntity1 = new EntityShape(relationship.cardinalities[0].Entity.sName, new Point(panelDoubleBuffered1.Width / 2 - ThongSo.ShapeW * 3/2, panelDoubleBuffered1.Height / 2), relationship.cardinalities[0].Entity.type); SelectedEntity2 = new EntityShape(relationship.cardinalities[1].Entity.sName, new Point(panelDoubleBuffered1.Width / 2 + ThongSo.ShapeW * 3/2, panelDoubleBuffered1.Height / 2), relationship.cardinalities[1].Entity.type); cardi1 = Relationship.CreateCardinality(SelectedEntity1, relationship.cardinalities[0].MinCardinality, relationship.cardinalities[0].MaxCardinality); cardi2 = Relationship.CreateCardinality(SelectedEntity2, relationship.cardinalities[1].MinCardinality, relationship.cardinalities[1].MaxCardinality); panelDoubleBuffered1.Controls.Add(Relationship); panelDoubleBuffered1.Controls.Add(SelectedEntity1); panelDoubleBuffered1.Controls.Add(SelectedEntity2); panelDoubleBuffered1.Refresh(); int min1, max1, min2, max2; min1 = Relationship.cardinalities[0].MinCardinality; max1 = Relationship.cardinalities[0].MaxCardinality; min2 = Relationship.cardinalities[1].MinCardinality; max2 = Relationship.cardinalities[1].MaxCardinality; if (min1 == 0 && max1 == 1) imageComboBoxEdit1.SelectedIndex = 0; if (min1 == 1 && max1 == 1) imageComboBoxEdit1.SelectedIndex = 1; if (min1 == 0 && max1 == -1) imageComboBoxEdit1.SelectedIndex = 2; if (min1 == 1 && max1 == -1) imageComboBoxEdit1.SelectedIndex = 3; if (min2 == 0 && max2 == 1) imageComboBoxEdit2.SelectedIndex = 0; if (min2 == 1 && max2 == 1) imageComboBoxEdit2.SelectedIndex = 1; if (min2 == 0 && max2 == -1) imageComboBoxEdit2.SelectedIndex = 2; if (min2 == 1 && max2 == -1) imageComboBoxEdit2.SelectedIndex = 3; showText(); }
public override ShapeBase Clone() { RelationshipShape rel = new RelationshipShape(); rel.sName = sName; rel.type = type; rel.Size = this.Size; rel.Location = Location; foreach (AttributeShape att in attributes) { rel.addAttribute((AttributeShape)att.Clone()); } foreach (CardinalityShape cardi in cardinalities) { CardinalityShape newcardi = (CardinalityShape)cardi.Clone(); rel.CreateCardinality(newcardi.Entity, newcardi.MinCardinality, newcardi.MaxCardinality); } return((ShapeBase)rel); }
public INotation createNotation() { RelationshipShape relationship = new RelationshipShape(); relationship.sName = this.name; relationship.type = this.type; relationship.Location = new Point(this.x, this.y); relationship.Size = new Size(this.w, this.h); return (INotation)relationship; }
private void CreateTernaryRelationship() { if (FirstEntity == SecondEntity || FirstEntity == ThirdEntity || SecondEntity == ThirdEntity) { return; } RelationshipShape rel = new RelationshipShape(); rel.type = DrawingShapeState; //Gán location của relationship mới tạo là điểm giữa của 3 Entity int MinX = Math.Min(FirstEntity.CenterPoint.X, Math.Min(SecondEntity.CenterPoint.X, ThirdEntity.CenterPoint.X)); int MinY = Math.Min(FirstEntity.CenterPoint.Y, Math.Min(SecondEntity.CenterPoint.Y, ThirdEntity.CenterPoint.Y)); int MaxX = Math.Max(FirstEntity.CenterPoint.X, Math.Max(SecondEntity.CenterPoint.X, ThirdEntity.CenterPoint.X)); int MaxY = Math.Max(FirstEntity.CenterPoint.Y, Math.Max(SecondEntity.CenterPoint.Y, ThirdEntity.CenterPoint.Y)); rel.CenterPoint = new Point(MinX + (MaxX - MinX) / 2, MinY + (MaxY - MinY) / 2); CardinalityShape car1 = rel.CreateCardinality(FirstEntity, 0, 0); CardinalityShape car2 = rel.CreateCardinality(SecondEntity, 0, 0); CardinalityShape car3 = rel.CreateCardinality(ThirdEntity, 0, 0); if (rel.type != RelationshipType.AssociativeEntity) { car1.setValue(1, 1); car2.setValue(1, 1); car3.setValue(1, 1); } else { car1.setValue(0, -1); car2.setValue(0, -1); car3.setValue(0, -1); } this.Controls.Add(rel); }
private void CreateBinaryRelationship() { if (FirstEntity == SecondEntity) { return; } RelationshipShape rel = new RelationshipShape(); rel.type = DrawingShapeState; //Gán location của relationship mới tạo là điểm giữa của 2 Entity rel.CenterPoint = new Point(Math.Abs(FirstEntity.CenterPoint.X + SecondEntity.CenterPoint.X) / 2, Math.Abs(FirstEntity.CenterPoint.Y + SecondEntity.CenterPoint.Y) / 2); CardinalityShape car1 = rel.CreateCardinality(FirstEntity, 0, 0); CardinalityShape car2 = rel.CreateCardinality(SecondEntity, 0, 0); if (FirstEntity.type != SecondEntity.type) rel.type = RelationshipType.Identifier; if (rel.type != RelationshipType.AssociativeEntity) { if (rel.type == RelationshipType.Identifier) { if (FirstEntity.type == EntityType.Strong) { car1.setValue(1, 1); car2.setValue(0, -1); } else { car1.setValue(0, -1); car2.setValue(1, 1); } } else { car1.setValue(1, 1); car2.setValue(0, -1); } } else { car1.setValue(0, -1); car2.setValue(0, -1); } this.Controls.Add(rel); }
//Create Relationship private void CreateUnaryRelationship() { RelationshipShape rel = new RelationshipShape(); rel.type = DrawingShapeState; rel.Location = new Point(FirstEntity.Location.X + FirstEntity.Width + ThongSo.ShapeW, FirstEntity.Location.Y); CardinalityShape car1 = rel.CreateCardinality(FirstEntity, 0, 0); CardinalityShape car2 = rel.CreateCardinality(FirstEntity, 0, 0); if (rel.type != RelationshipType.AssociativeEntity) { car1.setValue(1, 1); car2.setValue(0, -1); } else { car1.setValue(0, -1); car2.setValue(0, -1); } this.Controls.Add(rel); }
public override ShapeBase Clone() { RelationshipShape rel = new RelationshipShape(); rel.sName = sName; rel.type = type; rel.Size = this.Size; rel.Location = Location; foreach (AttributeShape att in attributes) { rel.addAttribute((AttributeShape)att.Clone()); } foreach (CardinalityShape cardi in cardinalities) { CardinalityShape newcardi = (CardinalityShape)cardi.Clone(); rel.CreateCardinality(newcardi.Entity, newcardi.MinCardinality, newcardi.MaxCardinality); } return (ShapeBase)rel; }