コード例 #1
0
 public PacketView(FrameworkElement view, ConnectionViewModel connection, NodeBaseViewModel from, Canvas canvas)
 {
     this.View       = view;
     this.Canvas     = canvas;
     this.From       = from;
     this.Connection = connection;
 }
コード例 #2
0
ファイル: Node.xaml.cs プロジェクト: yazici/EngTools
        public Node()
        {
            this.InitializeComponent();

            VM          = new NodeBaseViewModel(this);
            DataContext = VM;
        }
コード例 #3
0
        public override ConnectionViewModel CreateConnection(NodeBaseViewModel from, NodeBaseViewModel to)
        {
            ConnectionViewModel connectionViewModel;

            // No connection between same node
            if (from == to)
            {
                return(null);
            }
            if (from is ServerViewModel && to is ServerViewModel)
            {
                connectionViewModel = new ServerToServerConnectionViewModel(from, to, simulationSettings)
                {
                    FromDescriptor = new AttachDescriptorFromViewModel(),
                    ToDescriptor   = new AttachDescriptorToViewModel()
                };
            }
            else
            {
                connectionViewModel = new ClientToServerConnectionViewModel(from, to, simulationSettings)
                {
                    FromDescriptor = new AttachDescriptorFromViewModel(),
                    ToDescriptor   = new AttachDescriptorToViewModel()
                };
            }

            return(connectionViewModel);
        }
コード例 #4
0
 public ServerToServerConnectionViewModel(NodeBaseViewModel from, NodeBaseViewModel to, SimulationSettings worldSettings) :
     base(from, to)
 {
     this.worldSettings = worldSettings;
     StrokeThickness    = 5;
     Stroke             = Brushes.OrangeRed;
     //   DispatcherTimer timer = new DispatcherTimer();
     //  timer.Interval = new TimeSpan(0,0,1);
     //  timer.Tick += timer_Tick;
     //   timer.Start();
     Type = EdgeLineType.Bezier;
 }
コード例 #5
0
        public void LoadDiagram(string filename)
        {
            DiagramModel model = xmlSettings.ModelFromSettings(filename);

            diagramViewModel.ClearDiagram();

            using (var bm = new DiagramBatchMode(diagramViewModel))
            {
                Dictionary <DiagramNodeBase, NodeBaseViewModel> nodeDictionary = new Dictionary <DiagramNodeBase, NodeBaseViewModel>();
                foreach (var node in model.Nodes)
                {
                    NodeBaseViewModel nodeViewModel = diagramViewModel.Definition.ModelToViewModel(node);
                    if (nodeViewModel == null)
                    {
                        continue;
                    }

                    diagramViewModel.AddNode(nodeViewModel, node.Location);

                    nodeDictionary.Add(node, nodeViewModel);
                }
                // Force rendering so we can have sizes of all nodes
                //  diagramViewModel.ForceRedraw();

                foreach (var edge in model.Edges)
                {
                    diagramViewModel.AddConnection(nodeDictionary[edge.From], nodeDictionary[edge.To]);
                }
                // Render again so we can have sizes of attach descriptors
                diagramViewModel.ForceRedraw();

                Console.WriteLine("Model loaded");

                // dont need to call RaiseInitialize, it was allready called in AddNode
                //foreach (var node in diagramViewModel.Nodes)
                //     node.RaiseInitialize();

                foreach (var node in diagramViewModel.AttachDescriptors)
                {
                    node.RaiseInitialize();
                }

                diagramViewModel.ForceRedraw();
            }

            foreach (var conn in diagramViewModel.Edges)
            {
                conn.UpdateConnection();
            }
        }
コード例 #6
0
        /// <summary>
        /// Converts view model to model
        /// </summary>
        /// <param name="viewModel"></param>
        /// <returns></returns>
        internal DiagramNodeBase ViewModelToModel(NodeBaseViewModel viewModel)
        {
            var ctx = nodeBehaviours.FirstOrDefault(b => b.Value.TypeViewModel == viewModel.GetType());

            if (ctx.Value == null)
            {
                return(null);
            }
            if (ctx.Value.ConvertViewModelToModel == null)
            {
                return(null);
            }
            return(ctx.Value.ConvertViewModelToModel(viewModel));
        }
コード例 #7
0
        void DiagramBaseView_Loaded(object sender, RoutedEventArgs e)
        {
            vm = DataContext as NodeBaseViewModel;
            if (vm != null)
            {
                vm.Size = new Size(ActualWidth, ActualHeight);

                // vm.RaiseBindingComplete();


                vm.LocationChanged += vm_LocationChanged;
                UpdateGuiLocation(vm.Location.X, vm.Location.Y);
            }
        }
コード例 #8
0
 public override void HandleNodeClick(NodeBaseViewModel node)
 {
     if (prevSelectedNode != null)
     {
         Diagram.AddConnection(prevSelectedNode, node);
         prevSelectedNode = null;
         Diagram.HelpText = RandomNextStr;
     }
     else
     {
         Diagram.HelpText = "Great ! Now select destination";
         prevSelectedNode = node;
     }
 }
コード例 #9
0
ファイル: NodeEditorModel.cs プロジェクト: yazici/EngTools
        public NodeEditorModel(IPamuxViewModel vm)
            : base(vm)
        {
            var x = new NodeBaseViewModel
            {
                Title = "Some Node 1"
            };


            Nodes.Add(x.M as NodeBaseModel);

            //x = new NodeBaseViewModel
            //{
            //    Title = "Some Node 2"
            //};

            //Nodes.Add(x.M as NodeBaseModel);
        }
コード例 #10
0
        private bool HitTest(out DependencyObject visualHit, out ActionTypes action, out NodeBaseModel model, out Node view, out NodeBaseViewModel viewModel)
        {
            model     = null;
            view      = null;
            viewModel = null;
            action    = ActionTypes.None;

            var result = VisualTreeHelper.HitTest(LayoutRoot, Mouse.GetPosition(LayoutRoot));

            visualHit = result?.VisualHit;
            if (visualHit == null)
            {
                return(false);
            }

            var shape = (visualHit as Polygon) as Shape;

            if (shape == null)
            {
                shape = (visualHit as Rectangle) as Shape;
                if (shape == null)
                {
                    shape = (visualHit as Ellipse) as Shape;
                }
            }

            viewModel = (shape?.DataContext) as NodeBaseViewModel;
            if (viewModel == null)
            {
                return(false);
            }

            view = viewModel.V as Node;
            if (view == null)
            {
                return(false);
            }

            model = viewModel.M as NodeBaseModel;
            if (model == null)
            {
                return(false);
            }

            if (shape.Name == null)
            {
                return(false);
            }

            switch (shape.Name)
            {
            case "ResizeCorner":
                action = ActionTypes.Resize;
                return(true);

            case "NodePort":
                action = ActionTypes.Port;
                return(true);
            }

            action = ActionTypes.Drag;
            return(true);
        }
コード例 #11
0
 public ClientToServerConnectionViewModel(NodeBaseViewModel from, NodeBaseViewModel to, SimulationSettings worldSettings) :
     base(from, to)
 {
     StrokeThickness    = 2;
     this.worldSettings = worldSettings;
 }
コード例 #12
0
 /// <summary>
 /// Returns instance of connection view model that should be used for connection between from and to
 /// </summary>
 /// <param name="from">From node view model</param>
 /// <param name="to">To node view model</param>
 /// <returns>Connection view model or null if connection cannot be created</returns>
 public abstract ConnectionViewModel CreateConnection(NodeBaseViewModel from, NodeBaseViewModel to);
コード例 #13
0
 public override void HandleNodeClick(NodeBaseViewModel node)
 {
     Diagram.RemoveNode(node);
 }
コード例 #14
0
 public virtual void HandleNodeClick(NodeBaseViewModel node)
 {
 }