public void SelectConnection(ConnectionUI connection)
        {
            if (SelectedConnection != null)
            {
                SelectedConnection.IsConnectionSelected = false;
            }

            SelectedConnection = connection;

            if (SelectedConnection != null)
            {
                SelectedConnection.IsConnectionSelected = true;

                if (SelectedConnection is TransitionConnectionUI transitionConnection)
                {
                    TransitionInspector.Show(transitionConnection);
                }
                else
                {
                    TransitionInspector.Hide();
                }
            }
            else
            {
                TransitionInspector.Hide();
            }
        }
 public void OnExitConnect(ConnectionUI connection)
 {
     if (ExitConnections.Count > 1)
     {
         ExitConnections[0].Delete();
     }
 }
        public void RemoveConnection(ConnectionUI connection)
        {
            GraphView.RemoveElement(connection);

            if (connection is TransitionConnectionUI transitionConnection)
            {
                TransitionConnections.Remove(transitionConnection);
            }

            SelectConnection(null);
        }
        public ConnectionUI CreateConnection(IConnectable source, IConnectable destination = null, bool isTemporary = true)
        {
            ConnectionUI connection = null;

            if (isTemporary)
            {
                connection = new ConnectionUI(false)
                {
                    Source = source
                };
                GraphView.AddElement(connection);
                connection.SendToBack();
            }
            else
            {
                bool isNew;
                (connection, isNew)    = source.GetConnection(destination, true);
                connection.Source      = source;
                connection.Destination = destination;

                if (isNew)
                {
                    GraphView.AddElement(connection);
                    connection.SendToBack();

                    connection.Source      = source;
                    connection.Destination = destination;
                    source.ExitConnections.Add(connection);
                    destination.EntryConnections.Add(connection);

                    source.OnExitConnect(connection);
                    destination.OnEntryConnect(connection);

                    connection.schedule.Execute(() => connection.Refresh());

                    if (connection is TransitionConnectionUI transitionConnection)
                    {
                        TransitionConnections.Add(transitionConnection);
                    }
                }
            }

            return(connection);
        }
 public void OnExitConnectionDeleted(ConnectionUI connection)
 {
 }
 public void OnEntryConnectionDeleted(ConnectionUI connection)
 {
 }
 public void OnEntryConnect(ConnectionUI connection)
 {
 }