public static void ChangeDroppedVrsta(VrstaA vrsta) { foreach (VrstaA v in instance.Vrste) { if (v.Oznaka == vrsta.Oznaka) { v.X = vrsta.X; v.Y = vrsta.Y; break; } } SerijalizacijaVrste.serijalizacijaVrste(); } //cuvanje novih kordinata vrste pri pomjeranju ikonice na kanvasu
private void mapaVrsta_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { start = e.GetPosition(null); Canvas map = sender as Canvas; VrstaA dataObject = null; Point mousePosition = e.GetPosition(mapaVrsta); dataObject = ClickedVrsta((int)mousePosition.X, (int)mousePosition.Y); if (dataObject != null) { DataObject data = new DataObject(FROM_CANVAS, dataObject); DragDrop.DoDragDrop(map, data, DragDropEffects.Move); } }
//lijeva strana private void StackPanel_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) //sa panela na kanvas { start = e.GetPosition(null); StackPanel panel = sender as StackPanel; VrstaA dataObject = null; foreach (VrstaA vrsta in vm.Vrste) { if ((string)panel.Tag == vrsta.Oznaka) { dataObject = vrsta; break; } } DataObject data = new DataObject(FROM_SIDEBAR, dataObject); DragDrop.DoDragDrop(panel, data, DragDropEffects.Move); }
private void mapaVrsta_Drop(object sender, DragEventArgs e) { Point dropPosition = e.GetPosition(mapaVrsta); if (ClickedVrsta((int)dropPosition.X, (int)dropPosition.Y) != null) { return; } if (e.Data.GetDataPresent(FROM_SIDEBAR)) //sa panela na kanvas { VrstaA vrsta = e.Data.GetData(FROM_SIDEBAR) as VrstaA; vm.Vrste.Remove(vrsta); //uklanjam iz vrsta koje nisu na kanvasu vrstu vrsta.X = (int)dropPosition.X - OFFSET; vrsta.Y = (int)dropPosition.Y - OFFSET; Podaci.ChangeDroppedVrsta(vrsta); //pozivam serijalizaciju zbog koordinata vm.droppedVrste.Add(vrsta); //dodajem u vrste na kanvasu vrstu Canvas canvas = this.mapaVrsta; Image VrstaIkonica = new Image { Width = ICON_SIZE, Height = ICON_SIZE, Uid = vrsta.Oznaka, Source = new BitmapImage(new Uri(vrsta.Ikonica, UriKind.Absolute)) }; VrstaIkonica.ToolTip = vrsta.Oznaka; canvas.Children.Add(VrstaIkonica); Canvas.SetLeft(VrstaIkonica, vrsta.X); Canvas.SetTop(VrstaIkonica, vrsta.Y); return; } if (e.Data.GetDataPresent(FROM_CANVAS)) //sa kanvasa na kanvas { VrstaA vrsta = e.Data.GetData(FROM_CANVAS) as VrstaA; vm.droppedVrste.Remove(vrsta); vrsta.X = (int)dropPosition.X - OFFSET; vrsta.Y = (int)dropPosition.Y - OFFSET; Podaci.ChangeDroppedVrsta(vrsta); vm.droppedVrste.Add(vrsta); Canvas canvas = this.mapaVrsta; UIElement remove = null; foreach (UIElement elem in canvas.Children) { if (elem.Uid == vrsta.Oznaka) { remove = elem; break; } } canvas.Children.Remove(remove); Image VrstaIkonica = new Image { Width = ICON_SIZE, Height = ICON_SIZE, Uid = vrsta.Oznaka, Source = new BitmapImage(new Uri(vrsta.Ikonica, UriKind.Absolute)), }; VrstaIkonica.ToolTip = vrsta.Oznaka; //VrstaIkonica.ToolTip = vrsta.Ime; canvas.Children.Add(VrstaIkonica); Canvas.SetLeft(VrstaIkonica, vrsta.X); Canvas.SetTop(VrstaIkonica, vrsta.Y); return; } }