Exemple #1
0
 public GuiConnectionPoint(IAcceptConnection c, int ux, float uy, int num)
 {
     item           = c;
     this.ux        = ux;
     this.uy        = uy;
     number_in_conn = num;
 }
Exemple #2
0
 public GuiConnectionPoint( IAcceptConnection c, int ux, float uy, int num )
 {
     item = c;
     this.ux = ux;
     this.uy = uy;
     number_in_conn = num;
 }
Exemple #3
0
 public override void PostLoad()
 {
     item = parent.gui_objects[loadtime_id] as IAcceptConnection;
     if (item == null)
     {
         throw new ArgumentException("wrong id");
     }
     item.add_connection_point(this);
     base.PostLoad();
 }
        public override void MouseDown( int x, int y, MouseButtons b, Keys modif, int realx, int realy )
        {
            // Left mouse button

            if( action != MouseAction.None )
                return;

            if( b == MouseButtons.Left ) {

                if( current_operation == MouseOperation.DrawComment || current_operation == MouseOperation.DrawPackage ) {

                    switch( current_operation ) {
                        case MouseOperation.DrawComment:
                            moveitem = GuiElementFactory.CreateMemo( parent, x, y );
                            break;
                        case MouseOperation.DrawPackage:
                            moveitem = GuiElementFactory.CreatePackage( parent, x, y );
                            break;
                    }

                    first_move = true;
                    moveux = 0;
                    moveuy = 0;
                    action = MouseAction.Move;

                } else if( (modif & Keys.Control) == Keys.Control || current_operation == MouseOperation.DrawConnection ) {

                    conn_item = parent.FindItem( x, y, out moveux, out moveuy, true ) as IAcceptConnection;
                    if( conn_item == null ) {
                        action = MouseAction.Scroll;
                        selx = x;
                        sely = y;
                        return;
                    }

                    int ux;
                    float uy;
                    conn_item.coord_nearest( x, y, out ux, out uy );
                    action = MouseAction.CreateConnection;

                    conn = new GuiConnection( new GuiConnectionPoint( conn_item, ux, uy, 0 ), new GuiConnectionPoint( x, y, 1 ), conn_type, parent, conn_type == UmlRelationType.Attachment ? GuiConnectionStyle.Line : conn_style );
                    conn.first.item.coord_nearest( x, y, out conn.first.ux, out conn.first.uy );
                    conn.first.UpdatePosition( true );
                    conn.DoCreationFixup();
                    conn.InvalidateTemporary();
                    conn.Invalidate();

                } else if( ( modif & Keys.Shift) == Keys.Shift ) {

                    GuiObject obj = parent.FindItem( x, y, false );
                    if( obj != null ) {
                        parent.SelectedObjects.Add( obj );
                        obj.Invalidate();
                    }

                } else {

                    //   Left button click:
                    //      select
                    //      move, move multiple

                    GuiObject s = parent.FindItem( x, y, out moveux, out moveuy, false );
                    if( s == null ) {
                        parent.SelectedObjects.Clear();
                        action = MouseAction.Select;
                        selx = x;
                        sely = y;
                        return;
                    }

                    if( !s.selected ) {
                        parent.SelectedObjects.Clear();
                        parent.SelectedObjects.Add( s );
                    }

                    // deciding: to move, or not ...

                    moveitem = null;
                    movelist = null;
                    movestates.Clear();
                    original_selected = null;
                    GuiObject t = parent.FindItem( x, y, out moveux, out moveuy, true );
                    if( t != null ) {
                        if( t is IMoveRedirect ) {
                            if( t.selected )
                                original_selected = t;
                            moveitem = (t as IMoveRedirect).MoveRedirect( ref moveux, ref moveuy );
                        } else if( t is IMoveMultiple && (t as IMoveMultiple).CanMoveInGroup ) {
                            movelist = new ArrayList();
                            if( !t.selected )
                                movelist.Add( t );
                            foreach( GuiObject o in parent.SelectedObjects )
                                if( o is IMoveMultiple && (o as IMoveMultiple).CanMoveInGroup )
                                    movelist.Add( o );
                            selx = x;
                            sely = y;

                        } else if( t is IMoveable && (t as IMoveable).IsMoveable( x, y ) )
                            moveitem = t as IMoveable;

                        if( moveitem != null || movelist != null ) {
                            first_move = true;
                            action = MouseAction.Move;
                        } else if( t is IClickable ) {
                            (t as IClickable).LeftClick( false, x, y );
                        }
                    }

                }

            } else if( b == MouseButtons.Right ) {

                ISelectable obj = parent.FindItem( x, y, true ) as ISelectable;
                if( obj != null ) {

                    if( obj is IDropMenu ) {

                        parent.SelectedObjects.Clear();
                        parent.SelectedObjects.Add( obj as GuiObject );

                        System.Windows.Forms.ContextMenu m = new ContextMenu();
                        (obj as IDropMenu).AddMenuItems( m, x, y );
                        if( m.MenuItems.Count > 0 )
                            m.Show( parent.cview, new Point( realx, realy ) );
                    }

                } else {
                    action = MouseAction.Scroll;
                    Cursor.Current = Cursors.Hand;
                    selx = x;
                    sely = y;
                    menurealx = realx;
                    menurealy = realy;
                    first_move = true;
                }
            }
        }
Exemple #5
0
 public bool validate_connection(IAcceptConnection obj, GuiConnection connection)
 {
     return(true);
 }
 public bool validate_connection( IAcceptConnection obj, GuiConnection connection )
 {
     return true;
 }
Exemple #7
0
 public override void PostLoad()
 {
     item = parent.gui_objects[loadtime_id] as IAcceptConnection;
     if( item == null )
         throw new ArgumentException( "wrong id" );
     item.add_connection_point( this );
     base.PostLoad();
 }
        public override void MouseDown(int x, int y, MouseButtons b, Keys modif, int realx, int realy)
        {
            // Left mouse button

            if (action != MouseAction.None)
            {
                return;
            }

            if (b == MouseButtons.Left)
            {
                if (current_operation == MouseOperation.DrawComment || current_operation == MouseOperation.DrawPackage)
                {
                    switch (current_operation)
                    {
                    case MouseOperation.DrawComment:
                        moveitem = GuiElementFactory.CreateMemo(parent, x, y);
                        break;

                    case MouseOperation.DrawPackage:
                        moveitem = GuiElementFactory.CreatePackage(parent, x, y);
                        break;
                    }

                    first_move = true;
                    moveux     = 0;
                    moveuy     = 0;
                    action     = MouseAction.Move;
                }
                else if ((modif & Keys.Control) == Keys.Control || current_operation == MouseOperation.DrawConnection)
                {
                    conn_item = parent.FindItem(x, y, out moveux, out moveuy, true) as IAcceptConnection;
                    if (conn_item == null)
                    {
                        action = MouseAction.Scroll;
                        selx   = x;
                        sely   = y;
                        return;
                    }

                    int   ux;
                    float uy;
                    conn_item.coord_nearest(x, y, out ux, out uy);
                    action = MouseAction.CreateConnection;

                    conn = new GuiConnection(new GuiConnectionPoint(conn_item, ux, uy, 0), new GuiConnectionPoint(x, y, 1), conn_type, parent, conn_type == UmlRelationType.Attachment ? GuiConnectionStyle.Line : conn_style);
                    conn.first.item.coord_nearest(x, y, out conn.first.ux, out conn.first.uy);
                    conn.first.UpdatePosition(true);
                    conn.DoCreationFixup();
                    conn.InvalidateTemporary();
                    conn.Invalidate();
                }
                else if ((modif & Keys.Shift) == Keys.Shift)
                {
                    GuiObject obj = parent.FindItem(x, y, false);
                    if (obj != null)
                    {
                        parent.SelectedObjects.Add(obj);
                        obj.Invalidate();
                    }
                }
                else
                {
                    //   Left button click:
                    //      select
                    //      move, move multiple

                    GuiObject s = parent.FindItem(x, y, out moveux, out moveuy, false);
                    if (s == null)
                    {
                        parent.SelectedObjects.Clear();
                        action = MouseAction.Select;
                        selx   = x;
                        sely   = y;
                        return;
                    }

                    if (!s.selected)
                    {
                        parent.SelectedObjects.Clear();
                        parent.SelectedObjects.Add(s);
                    }

                    // deciding: to move, or not ...

                    moveitem = null;
                    movelist = null;
                    movestates.Clear();
                    original_selected = null;
                    GuiObject t = parent.FindItem(x, y, out moveux, out moveuy, true);
                    if (t != null)
                    {
                        if (t is IMoveRedirect)
                        {
                            if (t.selected)
                            {
                                original_selected = t;
                            }
                            moveitem = (t as IMoveRedirect).MoveRedirect(ref moveux, ref moveuy);
                        }
                        else if (t is IMoveMultiple && (t as IMoveMultiple).CanMoveInGroup)
                        {
                            movelist = new ArrayList();
                            if (!t.selected)
                            {
                                movelist.Add(t);
                            }
                            foreach (GuiObject o in parent.SelectedObjects)
                            {
                                if (o is IMoveMultiple && (o as IMoveMultiple).CanMoveInGroup)
                                {
                                    movelist.Add(o);
                                }
                            }
                            selx = x;
                            sely = y;
                        }
                        else if (t is IMoveable && (t as IMoveable).IsMoveable(x, y))
                        {
                            moveitem = t as IMoveable;
                        }

                        if (moveitem != null || movelist != null)
                        {
                            first_move = true;
                            action     = MouseAction.Move;
                        }
                        else if (t is IClickable)
                        {
                            (t as IClickable).LeftClick(false, x, y);
                        }
                    }
                }
            }
            else if (b == MouseButtons.Right)
            {
                ISelectable obj = parent.FindItem(x, y, true) as ISelectable;
                if (obj != null)
                {
                    if (obj is IDropMenu)
                    {
                        parent.SelectedObjects.Clear();
                        parent.SelectedObjects.Add(obj as GuiObject);

                        System.Windows.Forms.ContextMenu m = new ContextMenu();
                        (obj as IDropMenu).AddMenuItems(m, x, y);
                        if (m.MenuItems.Count > 0)
                        {
                            m.Show(parent.cview, new Point(realx, realy));
                        }
                    }
                }
                else
                {
                    action         = MouseAction.Scroll;
                    Cursor.Current = Cursors.Hand;
                    selx           = x;
                    sely           = y;
                    menurealx      = realx;
                    menurealy      = realy;
                    first_move     = true;
                }
            }
        }