//add foreign key to this table figure public void addFkConstraint(RelationshipFigure r, kindOptionality optionality) { //TODO: implement more than one fk between same tables [multiple times same fk column is used]. List<ColumnFkFigure> tmp = Model.addFkConstraint (r.StartTable.Model, optionality); foreach (ColumnFkFigure c in tmp) { this.Add (c); } OnFigureChanged (new FigureEventArgs (this, DisplayBox)); }
protected virtual void OnbuttonRelationshipActivated(object sender, System.EventArgs e) { RelationshipFigure rel = new RelationshipFigure (); _owner.Tool = new ConnectionCreationTool (_owner, rel); }
public RelationshipLineTerminal(RelationshipFigure owner) : this(owner, 10.0, 20.0, kindRelationshipTerminal.OneMore, kindNotation.CrowsFoot, false) { }
public override void InvokeStart(double x, double y, IDrawingView view) { if (Owner is TableFigure) { _clicked = !_clicked; TableFigure f = (TableFigure)Owner; if (_locator is IndexLocator) { //Show/Hide Indexes if (f.showIndexes) { foreach (Index indx in f.Model.indexes) { f.Remove (indx); } f.showIndexes = false; } else { foreach (Index indx in f.Model.indexes) { f.Add (indx); } f.showIndexes = true; } } if (_locator is TriggerLocator) { //Show/Hide Triggers if (f.showTriggers) { foreach (Trigger trg in f.Model.triggers) { f.Remove (trg); } f.showTriggers = false; } else { foreach (Trigger trg in f.Model.triggers) { f.Add (trg); } f.showTriggers = true; } } if (_locator is ColumnAddLocator){ //Add a new column to table f.addNewColumn(); } if (_locator is ColumnRemoveLocator){ //Activate a state where the figure wait for the user to click a column and then delete it f.activateRemoveColumn(); } if (_locator is ForeignKeyLocator){ //Start Creation of Foreign Key RelationshipFigure rel = new RelationshipFigure (); f.figureCanvas.Tool = new ConnectionCreationTool (f.figureCanvas, rel); f.figureCanvas.Tool.MouseDown(new MouseEvent(f.figureCanvas.View,null,new Cairo.PointD(x,y))); } if (_locator is RemoveTableLocator){ //Remove Table Selected f.unPopulateTable(); //view.ToggleSelection(f); view.ClearSelection (); view.Drawing.Remove(f); view.Remove(f); List<RelationshipFigure> deleteFigures = new List<RelationshipFigure>(); foreach ( IFigure fig in view.Drawing.FiguresEnumerator){ if(fig is RelationshipFigure){ TableFigure startTable=((fig as RelationshipFigure).StartFigure as TableFigure); TableFigure endTable=((fig as RelationshipFigure).EndFigure as TableFigure); if(startTable.Model.Name==f.Model.Name || endTable.Model.Name==f.Model.Name) deleteFigures.Add(fig as RelationshipFigure); } } if(deleteFigures.Count>0){ view.ClearSelection (); foreach(RelationshipFigure delRelationship in deleteFigures){ view.Drawing.Remove(delRelationship); } } } } }
public RelationshipLineTerminal(RelationshipFigure owner, double lDistance, double pDistance, kindRelationshipTerminal kind, kindNotation notation, bool identifying) : base() { lineDistance = lDistance; pointDistance = pDistance; parent=owner; this.kind = kind; this.Identifying = identifying; this.notation = notation; }