//cuvanje novih kordinata vrste pri pomeranju ikonice na kanvasu public static void ChangeDroppedVrsta(VrstaKlasa vrsta) { foreach (VrstaKlasa v in instance.Vrste) { if (v.Oznaka == vrsta.Oznaka) { v.X = vrsta.X; v.Y = vrsta.Y; break; } } SerijalizacijaVrste.serijalizacijaVrste(); }
private void mapaVrsta_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { start = e.GetPosition(null); Canvas map = sender as Canvas; VrstaKlasa 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); } }
private void mapaLokala_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { Point dropPosition = e.GetPosition(mapaVrsta); VrstaKlasa vrsta = ClickedVrsta((int)dropPosition.X, (int)dropPosition.Y); if (vrsta != null) { for (int i = 0; i < vm.droppedVrste.Count; i++) { if (vm.droppedVrste[i].Oznaka.Equals(vrsta.Oznaka)) { vm.Vrste.Add(vm.droppedVrste[i]); mapaVrsta.Children.RemoveAt(i); ugroVrste.ItemsSource = vm.Vrste; vm.droppedVrste.RemoveAt(i); break; } } } }
//Drag and drop //leva strana private void StackPanel_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) //sa panela na kanvas { start = e.GetPosition(null); StackPanel panel = sender as StackPanel; VrstaKlasa dataObject = null; foreach (VrstaKlasa 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 { VrstaKlasa vrsta = e.Data.GetData(FROM_SIDEBAR) as VrstaKlasa; 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 { VrstaKlasa vrsta = e.Data.GetData(FROM_CANVAS) as VrstaKlasa; 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; canvas.Children.Add(VrstaIkonica); Canvas.SetLeft(VrstaIkonica, vrsta.X); Canvas.SetTop(VrstaIkonica, vrsta.Y); return; } }