public PacketView(FrameworkElement view, ConnectionViewModel connection, NodeBaseViewModel from, Canvas canvas) { this.View = view; this.Canvas = canvas; this.From = from; this.Connection = connection; }
public Node() { this.InitializeComponent(); VM = new NodeBaseViewModel(this); DataContext = VM; }
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); }
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; }
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(); } }
/// <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)); }
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); } }
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; } }
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); }
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); }
public ClientToServerConnectionViewModel(NodeBaseViewModel from, NodeBaseViewModel to, SimulationSettings worldSettings) : base(from, to) { StrokeThickness = 2; this.worldSettings = worldSettings; }
/// <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);
public override void HandleNodeClick(NodeBaseViewModel node) { Diagram.RemoveNode(node); }
public virtual void HandleNodeClick(NodeBaseViewModel node) { }