public void Drop(IDropInfo dropInfo) { ZawartośćKlockaPionowegoZZawartością docelowaKolekcja = (ZawartośćKlockaPionowegoZZawartością)dropInfo.TargetCollection; KlocekPionowy upuszczanyKlocek = (KlocekPionowy)dropInfo.Data; upuszczanyKlocek.Rodzic = docelowaKolekcja.KlocekPionowyZZawartością; upuszczanyKlocek.ZPrzybornika = false; int indeksDocelowy = dropInfo.InsertIndex; IDragInfo informacjeOPrzeciągnięciu = dropInfo.DragInfo; ZawartośćKlockaPionowegoZZawartością źródło = informacjeOPrzeciągnięciu.SourceCollection as ZawartośćKlockaPionowegoZZawartością; ManipulacjaKlockiemPionowym manipulacja = new ManipulacjaKlockiemPionowym(ManipulacjeKlockiem.Dodanie, upuszczanyKlocek) { IndeksDocelowy = indeksDocelowy, Cel = docelowaKolekcja }; if (źródło != null) { manipulacja.IndeksŹródłowy = informacjeOPrzeciągnięciu.SourceIndex; manipulacja.Źródło = źródło; } docelowaKolekcja.Insert(indeksDocelowy, upuszczanyKlocek); _metodaZachowującaStanAplikacji(manipulacja); }
private void Otwórz_OnClick(object sender, RoutedEventArgs e) { if (ModelWidoku.Debugowanie) { return; } if (!OstrzeżenieOUtracie()) { return; } OpenFileDialog okno = new OpenFileDialog { DefaultExt = "mgr", Filter = @"Pliki projektu pracy mgr | *.mgr" }; if (okno.ShowDialog() == System.Windows.Forms.DialogResult.OK) { Czyść(); string ścieżkaPliku = okno.FileName; ModelWidoku.ŚcieżkaPliku = ścieżkaPliku; Title = $"Praca magisterska - {Path.GetFileName(ścieżkaPliku)}"; XDocument dokumentXml = XDocument.Load(ścieżkaPliku); XElement[] węzły = dokumentXml.Elements().Elements().ToArray(); ObservableCollection <Zmienna> zmienne = ModelWidoku.Zmienne; RozpoczęcieProgramu głównaFunkcja = ModelWidoku.RozpoczęcieProgramu; foreach (XElement zmienna in węzły.Single(w => w.Name == "Zmienne").Elements()) { zmienne.Add(new Zmienna(zmienne) { Nazwa = zmienna.Value }); } IEnumerable <XElement> klockiWewnętrzne = węzły.Single(w => w.Name == "Klocki").Element(typeof(RozpoczęcieProgramu).FullName)?.Element("Zawartość")?.Elements(); if (klockiWewnętrzne != null) { foreach (XElement węzełKlockaPionowego in klockiWewnętrzne) { Type typKlockaPionowego = Type.GetType(węzełKlockaPionowego.Name.LocalName); if (typKlockaPionowego != null) { KlocekPionowy klocekPionowy = (KlocekPionowy)Activator.CreateInstance(typKlockaPionowego); klocekPionowy.Rodzic = głównaFunkcja; klocekPionowy.PrzeczytajZXml(węzełKlockaPionowego, ModelWidoku.Konsola, ModelWidoku.Semafor, zmienne); głównaFunkcja.Zawartość.Add(klocekPionowy); } } głównaFunkcja.Semafor = ModelWidoku.Semafor; } } }
private void DodajUsuńPunktPrzerwania(object obiektKlocka) { KlocekPionowy klocekPionowy = (KlocekPionowy)obiektKlocka; if (klocekPionowy.Rodzic != null) { klocekPionowy.PunktPrzerwania = !klocekPionowy.PunktPrzerwania; RozpoczęcieProgramu.Semafor = Semafor; } }
public void DragOver(IDropInfo dropInfo) { KlocekPionowy upuszczanyKlocek = dropInfo.Data as KlocekPionowy; DragDropEffects efektUpuszczenia; if (upuszczanyKlocek == null) { efektUpuszczenia = DragDropEffects.None; } else { efektUpuszczenia = upuszczanyKlocek.ZPrzybornika ? DragDropEffects.Copy : DragDropEffects.Move; dropInfo.DropTargetAdorner = DropTargetAdorners.Insert; } dropInfo.Effects = efektUpuszczenia; }
private void UsuńKlocekPionowy(object obiektKlocka) { KlocekPionowy usuwanyKlocek = (KlocekPionowy)obiektKlocka; KlocekPionowyZZawartością klocekPionowyZZawartością = usuwanyKlocek.Rodzic; if (klocekPionowyZZawartością != null) { ZawartośćKlockaPionowegoZZawartością miejsceUmieszczenia = klocekPionowyZZawartością.Zawartość; int indeks = miejsceUmieszczenia.IndexOf(usuwanyKlocek); if ((indeks == -1) && klocekPionowyZZawartością is WykonajJeżeli) { miejsceUmieszczenia = ((WykonajJeżeli)klocekPionowyZZawartością).AlternatywnaZawartość; indeks = miejsceUmieszczenia.IndexOf(usuwanyKlocek); } miejsceUmieszczenia.RemoveAt(indeks); DodajDziałanie(new ManipulacjaKlockiemPionowym(ManipulacjeKlockiem.Usunięcie, usuwanyKlocek) { IndeksDocelowy = indeks, Cel = miejsceUmieszczenia }); } }