コード例 #1
0
 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);
                     }
                 }
         }
     }
 }