public ConnectionCreateControllerSetupArgs(
     INodeControl[] nodes,
     IPlugControl[] sourcePlugs,
     ConnectionItemsControl connectionItemsControl,
     ICommand connectionCreated,
     ICommand startConnectionCreated,
     ICommand cancelConnectionCreated,
     SourcePlugType sourcePlugType)
 {
     Nodes       = nodes;
     SourcePlugs = sourcePlugs;
     CreatingConnectionItemsControl = connectionItemsControl;
     ConnectionCreated       = connectionCreated;
     StartConnectionCreated  = startConnectionCreated;
     CancelConnectionCreated = cancelConnectionCreated;
     SourcePlugType          = sourcePlugType;
 }
Beispiel #2
0
 public ConnectionCreateControllerSetupArgs(
     IInputElement baseControl,
     MouseEventArgs args,
     NodeControl[] nodes,
     PlugControl[] sourcePlugs,
     ConnectionItemsControl connectionItemsControl,
     ICommand connectionCreated,
     ICommand startConnectionCreated,
     SourcePlugType sourcePlugType)
 {
     Args        = args;
     BaseControl = baseControl;
     Nodes       = nodes;
     SourcePlugs = sourcePlugs;
     CreatingConnectionItemsControl = connectionItemsControl;
     ConnectionCreated      = connectionCreated;
     StartConnectionCreated = startConnectionCreated;
     SourcePlugType         = sourcePlugType;
 }
        private PlugControl[] get_mouse_over_plugs(NodeControl[] nodes, out SourcePlugType sourcePlugType)
        {
            sourcePlugType = SourcePlugType.Output;
            var plugs = nodes
                        .SelectMany(x => x.GetOutputPlugs())
                        .Where(x => x.IsMouseOver)
                        .ToArray();

            if (plugs.Length is 0)
            {
                sourcePlugType = SourcePlugType.Input;
                plugs          = nodes
                                 .SelectMany(x => x.GetInputPlugs())
                                 .Where(x => x.IsMouseOver)
                                 .ToArray();
            }

            return(plugs);
        }
        //! コンストラクタ / ドラッグ開始
        public ConnectionCreateController(ConnectionCreateControllerSetupArgs setupArgs)
        {
            _nodes = setupArgs.Nodes;

            _sourcePlugs = setupArgs.SourcePlugs
                           .Select(x => x.DataContext)
                           .OfType <IPlugDataContext>()
                           .ToArray();

            _plugToConnectionDataContexts = _sourcePlugs
                                            .ToDictionary(x => x, x => x.StartConnection());

            _connections = _plugToConnectionDataContexts
                           .Select(x => x.Value)
                           .ToArray();

            _connectionItemsControl = setupArgs.CreatingConnectionItemsControl;
            _connectionCreated      = setupArgs.ConnectionCreated;
            _connectionCreateCancel = setupArgs.CancelConnectionCreated;
            _sourcePlugType         = setupArgs.SourcePlugType;
            _connectionStart        = setupArgs.StartConnectionCreated;
        }
Beispiel #5
0
        //! コンストラクタ / ドラッグ開始
        public ConnectionCreateController(ConnectionCreateControllerSetupArgs setupArgs)
        {
            _nodes        = setupArgs.Nodes;
            _inputElement = setupArgs.BaseControl;

            _sourcePlugs = setupArgs.SourcePlugs
                           .Select(x => x.DataContext)
                           .OfType <IPlugDataContext>()
                           .ToArray();

            _plugToConnectionDataContexts = _sourcePlugs
                                            .ToDictionary(x => x, x => x.StartConnection());

            _connections = _plugToConnectionDataContexts
                           .Select(x => x.Value)
                           .ToArray();

            _connectionItemsControl = setupArgs.CreatingConnectionItemsControl;
            _connectionCreated      = setupArgs.ConnectionCreated;
            _sourcePlugType         = setupArgs.SourcePlugType;

            setupArgs.StartConnectionCreated?.Execute(new StartCreateConnectionEventArgs(_sourcePlugs));
        }