コード例 #1
0
ファイル: CefCustomObject.cs プロジェクト: kacacukurov/HCI
        public void getEvent(string id, string naziv, string pocetak, string kraj, string dan, string ucionica, bool dodat)
        {
            // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
            StanjeAplikacije staroStanje = new StanjeAplikacije();

            staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
            staroStanje.TipPodataka      = "kalendar";
            staroStanje.Kolicina         = 1;

            if (!racunarskiCentar.PoljaKalendara.ContainsKey(id))
            {
                staroStanje.TipPromene = "brisanje";
                racunarskiCentar.PoljaKalendara.Add(id, new KalendarPolje(id, naziv, pocetak, kraj, dan, ucionica));
            }
            else
            {
                staroStanje.TipPromene = "pomeranje";
                KalendarPolje polje = racunarskiCentar.PoljaKalendara[id];
                polje.Pocetak  = pocetak;
                polje.Kraj     = kraj;
                polje.Dan      = dan;
                polje.Ucionica = ucionica;
            }
            if (dodat)
            {
                Predmet p = racunarskiCentar.Predmeti[naziv.Split('-')[0]];
                p.PreostaliTermini--;
            }

            // na undo stek treba da upisemo staro stanje aplikacije
            // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
            string kljuc = Guid.NewGuid().ToString();

            // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
            // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
            if (prethodnaStanjaAplikacije.Count >= 2)
            {
                prethodnaStanjaAplikacije.RemoveAt(0);
            }
            prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
            stekStanja.GetUndo().Push(kljuc);

            // omogucavamo pozivanje opcije undo
            Application.Current.Dispatcher.Invoke(() =>
            {
                _instanceWindow.omoguciUndo();
            });
        }
コード例 #2
0
        private void finishClick(object sender, RoutedEventArgs e)
        {
            finishButton.Focus();
            if (izmena)
            {
                izmenaUcionice();
                return;
            }
            if (validacijaNoveUcionice() && !dodavanjeUcioniceIzborStarogUnosa)
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "ucionica";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "brisanje";
                staroStanje.Oznake.Add(oznakaUcionica.Text.Trim());

                novaUcionica.Oznaka = oznakaUcionica.Text.Trim();
                novaUcionica.Opis   = opisUcionica.Text.Trim();

                novaUcionica.PrisustvoPametneTable = prisustvoPametneTableUcionica.IsChecked;
                novaUcionica.PametnaTablaString    = novaUcionica.PrisustvoPametneTable ? "prisutna" : "nije prisutna";
                novaUcionica.PrisustvoTable        = prisustvoTableUcionica.IsChecked;
                novaUcionica.TablaString           = novaUcionica.PrisustvoTable ? "prisutna" : "nije prisutna";
                novaUcionica.PrisustvoProjektora   = prisustvoProjektoraUcionica.IsChecked;
                novaUcionica.ProjektorString       = novaUcionica.PrisustvoProjektora ? "prisutan" : "nije prisutan";

                novaUcionica.BrojRadnihMesta = int.Parse(brojRadnihMestaUcionica.Text.Trim());
                if ((bool)LinuxOSUcionica.IsChecked)
                {
                    novaUcionica.OperativniSistem = "Linux";
                }
                else if ((bool)WindowsOSUcionica.IsChecked)
                {
                    novaUcionica.OperativniSistem = "Windows";
                }
                else
                {
                    novaUcionica.OperativniSistem = "Windows i Linux";
                }

                StringBuilder sb           = new StringBuilder();
                int           brojSoftvera = 0;
                for (int i = 0; i < softverTabela.Items.Count; i++)
                {
                    Softver softver = (Softver)softverTabela.Items[i];
                    if (softver.Instaliran)
                    {
                        brojSoftvera++;
                        novaUcionica.InstaliraniSoftveri.Add(softver.Oznaka);

                        if (brojSoftvera > 1)
                        {
                            sb.Append("\n");
                        }
                        sb.Append("Oznaka: " + softver.Oznaka);
                        sb.Append("\nNaziv: " + softver.Naziv);
                        sb.Append("\nOpis: " + softver.Opis + "\n");
                        softver.Instaliran = false;
                    }
                }
                novaUcionica.SoftveriLista = sb.ToString();

                tabelaUcionica.Add(novaUcionica);
                racunarskiCentar.DodajUcionicu(novaUcionica);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste dodali novu učionicu!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 10)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
            else if (dodavanjeUcioniceIzborStarogUnosa)
            {
                // ukoliko postoji predmet (logicki neaktivan) sa istom oznakom
                // kao sto je uneta, ponovo aktiviramo taj predmet (postaje logicki aktivan)
                tabelaUcionica.Add(racunarskiCentar.Ucionice[oznakaUcionica.Text.Trim()]);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste aktivirali postojeću učionicu!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 10)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
        }
コード例 #3
0
        private void finishClick(object sender, RoutedEventArgs e)
        {
            if (izmena)
            {
                izmeniSmer();
                return;
            }
            if (validacijaDodavanjaSmera() && !dodavanjeSmeraIzborStarogUnosa)
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "smer";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "brisanje";
                staroStanje.Oznake.Add(OznakaSmera.Text.Trim());

                smer.Naziv  = NazivSmera.Text.Trim();
                smer.Oznaka = OznakaSmera.Text.Trim();
                smer.Opis   = OpisSmera.Text.Trim();
                string datum = DateTime.Parse(DatumUvodjenja.Text.Trim()).ToString("dd/MM/yyyy");
                smer.Datum = datum;

                tabelaSmerova.Add(smer);
                racunarskiCentar.DodajSmer(smer);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste dodali novi smer!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 10)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);

                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
            else if (dodavanjeSmeraIzborStarogUnosa)
            {
                // ukoliko postoji smer (logicki neaktivan) sa istom oznakom
                // kao sto je uneta, ponovo aktiviramo taj smer (postaje logicki aktivan)
                tabelaSmerova.Add(racunarskiCentar.Smerovi[OznakaSmera.Text.Trim()]);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste aktivirali smer!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 10)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);

                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
        }
コード例 #4
0
        private void finishClick(object sender, RoutedEventArgs e)
        {
            if (validacijaPodataka())
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                StanjeAplikacije staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "softver";
                staroStanje.Kolicina         = indeksiZaIzmenu.Count;
                staroStanje.TipPromene       = "izmena";
                foreach (int index in indeksiZaIzmenu)
                {
                    staroStanje.Oznake.Add(tabelaSoftvera[index].Oznaka);
                }

                List <string> softveriIzmenjenogNazivaIliOpisa = new List <string>();
                foreach (int index in indeksiZaIzmenu)
                {
                    Softver softverIzmena = racunarskiCentar.Softveri[tabelaSoftvera[index].Oznaka];

                    if (nazivSoftver.Text.Trim() != "")
                    {
                        if (!softverIzmena.Naziv.Equals(nazivSoftver.Text.Trim()))
                        {
                            softveriIzmenjenogNazivaIliOpisa.Add(softverIzmena.Oznaka);
                        }
                        softverIzmena.Naziv = nazivSoftver.Text.Trim();
                    }

                    if (opisSoftver.Text.Trim() != "")
                    {
                        if (!softverIzmena.Opis.Equals(opisSoftver.Text.Trim()))
                        {
                            softveriIzmenjenogNazivaIliOpisa.Add(softverIzmena.Oznaka);
                        }
                        softverIzmena.Opis = opisSoftver.Text.Trim();
                    }

                    if (godinaSoftver.Text.Trim() != "")
                    {
                        softverIzmena.GodIzdavanja = int.Parse(godinaSoftver.Text.Trim());
                    }
                    if (cenaSoftver.Text.Trim() != "")
                    {
                        softverIzmena.Cena = double.Parse(cenaSoftver.Text.Trim());
                    }
                    if (proizvodjacSoftver.Text.Trim() != "")
                    {
                        softverIzmena.Proizvodjac = proizvodjacSoftver.Text.Trim();
                    }
                    if (sajtSoftver.Text.Trim() != "")
                    {
                        softverIzmena.Sajt = sajtSoftver.Text.Trim();
                    }

                    tabelaSoftvera[index] = softverIzmena;
                }

                if (softveriIzmenjenogNazivaIliOpisa.Count > 0)
                {
                    // azurira se i ispis softvera za ucionicu/predmet
                    StringBuilder sb = new StringBuilder();

                    List <string> obradjeneUcionice = new List <string>();
                    List <string> obradjeniPredmeti = new List <string>();
                    foreach (string oznaka in softveriIzmenjenogNazivaIliOpisa)
                    {
                        // azuriranje ispisa u ucionici ako postoji taj softver
                        foreach (Ucionica u in racunarskiCentar.Ucionice.Values)
                        {
                            if (!obradjeneUcionice.Contains(u.Oznaka) && u.InstaliraniSoftveri.Contains(oznaka))
                            {
                                foreach (string s in u.InstaliraniSoftveri)
                                {
                                    Softver softver = racunarskiCentar.Softveri[s];
                                    if (u.InstaliraniSoftveri.IndexOf(softver.Oznaka) != 0)
                                    {
                                        sb.Append("\n");
                                    }
                                    sb.Append("Oznaka: " + softver.Oznaka);
                                    sb.Append("\nNaziv: " + softver.Naziv);
                                    sb.Append("\nOpis: " + softver.Opis + "\n");
                                }
                                u.SoftveriLista = sb.ToString();
                                sb.Clear();
                                obradjeneUcionice.Add(u.Oznaka);
                            }
                        }

                        // azuriranje ispisa u predmetu ako postoji taj softver
                        foreach (Predmet p in racunarskiCentar.Predmeti.Values)
                        {
                            if (!obradjeniPredmeti.Contains(p.Oznaka) && p.Softveri.Contains(oznaka))
                            {
                                foreach (string s in p.Softveri)
                                {
                                    Softver softver = racunarskiCentar.Softveri[s];
                                    if (p.Softveri.IndexOf(softver.Oznaka) != 0)
                                    {
                                        sb.Append("\n");
                                    }
                                    sb.Append("Oznaka: " + softver.Oznaka);
                                    sb.Append("\nNaziv: " + softver.Naziv);
                                    sb.Append("\nOpis: " + softver.Opis + "\n");
                                }
                                p.SoftveriLista = sb.ToString();
                                sb.Clear();
                                obradjeniPredmeti.Add(p.Oznaka);
                            }
                        }
                    }
                }
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste izmenili softvere!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 2)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdaIzmena = true;

                this.Close();
            }
        }
コード例 #5
0
ファイル: Tutorijal.xaml.cs プロジェクト: kacacukurov/HCI
        private void finishClick(object sender, RoutedEventArgs e)
        {
            if (izmena)
            {
                izmeniSoftver();
                return;
            }
            if (validacijaNovogSoftvera() && !dodavanjeSoftveraIzborStarogUnosa)
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "softver";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "brisanje";
                staroStanje.Oznake.Add(oznakaSoftver.Text.Trim());

                noviSoftver.Oznaka       = oznakaSoftver.Text.Trim();
                noviSoftver.Naziv        = nazivSoftver.Text.Trim();
                noviSoftver.Opis         = opisSoftver.Text.Trim();
                noviSoftver.GodIzdavanja = int.Parse(godinaSoftver.Text.Trim());
                noviSoftver.Cena         = double.Parse(cenaSoftver.Text.Trim());
                if ((bool)WindowsOSSoftver.IsChecked)
                {
                    noviSoftver.OperativniSistem = "Windows";
                }
                else if ((bool)LinuxOSSoftver.IsChecked)
                {
                    noviSoftver.OperativniSistem = "Linux";
                }
                else
                {
                    noviSoftver.OperativniSistem = "Windows i Linux";
                }
                noviSoftver.Proizvodjac = proizvodjacSoftver.Text.Trim();
                noviSoftver.Sajt        = sajtSoftver.Text.Trim();

                tabelaSoftvera.Add(noviSoftver);
                racunarskiCentar.DodajSoftver(noviSoftver);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste dodali novi softver!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 3)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
            else if (dodavanjeSoftveraIzborStarogUnosa)
            {
                // ukoliko postoji softver (logicki neaktivan) sa istom oznakom
                // kao sto je uneta, ponovo aktiviramo taj softver (postaje logicki aktivan)
                tabelaSoftvera.Add(racunarskiCentar.Softveri[oznakaSoftver.Text.Trim()]);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste aktivirali postojeći softver!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 3)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
        }
コード例 #6
0
        private void finishClick(object sender, RoutedEventArgs e)
        {
            if (validacijaPraznihPolja())
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                StanjeAplikacije staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "smer";
                staroStanje.Kolicina         = indeksi.Count;
                staroStanje.TipPromene       = "izmena";
                foreach (int index in indeksi)
                {
                    staroStanje.Oznake.Add(tabelaSmerova[index].Oznaka);
                }

                foreach (int index in indeksi)
                {
                    Smer smerIzmena     = racunarskiCentar.Smerovi[tabelaSmerova[index].Oznaka];
                    bool nazivPromenjen = false;

                    if (NazivSmera.Text.Trim() != "")
                    {
                        smerIzmena.Naziv = NazivSmera.Text.Trim();
                        nazivPromenjen   = true;
                    }
                    if (OpisSmera.Text.Trim() != "")
                    {
                        smerIzmena.Opis = OpisSmera.Text.Trim();
                    }
                    if (DatumUvodjenja.Text.Trim() != "")
                    {
                        smerIzmena.Datum = DateTime.Parse(DatumUvodjenja.Text.Trim()).ToString("dd/MM/yyyy");
                    }

                    if (smerIzmena.Predmeti.Count > 0 && nazivPromenjen)
                    {
                        foreach (string predmet in smerIzmena.Predmeti)
                        {
                            racunarskiCentar.Predmeti[predmet].SmerDetalji = "Oznaka: " + smerIzmena.Oznaka + "\nNaziv: " + smerIzmena.Naziv;
                        }
                    }

                    tabelaSmerova[index] = smerIzmena;
                }

                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste izmenili smerove!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 2)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdaIzmena = true;

                this.Close();
            }
        }