예제 #1
0
        public static void initRezultatiUkupnoZaEkipe(DataGridViewUserControl dgw,
                                                      Takmicenje takmicenje)
        {
            dgw.DataGridView.Columns.Clear();

            dgw.AddColumn("Ime", "PrezimeIme", 170);
            dgw.AddColumn("Klub/Drzava", "KlubDrzava", 130);

            Sprava[] sprave = Sprave.getSprave(takmicenje.Gimnastika);

            foreach (Sprava sprava in sprave)
            {
                string columnName = Sprave.toString(sprava);
                string propName   = columnName;
                int    width      = 50;
                if (sprava == Sprava.Konj)
                {
                    width    = 70;
                    propName = "Konj";
                }
                else if (sprava == Sprava.DvovisinskiRazboj)
                {
                    width    = 70;
                    propName = "DvovisinskiRazboj";
                }
                dgw.AddColumn(columnName, propName, width, "{0:F" + takmicenje.BrojDecimalaTotal + "}");
            }
            dgw.AddColumn("Ukupno", "Total", 50, "{0:F" + takmicenje.BrojDecimalaTotal + "}");
        }
예제 #2
0
        private void createUI()
        {
            Text = "Sudijske funkcije - " + Sprave.toString(odbor.Sprava);

            List <SudijskaUloga> uloge = new List <SudijskaUloga>(SudijskeUloge.getSveUloge());

            int x        = 12;
            int y        = 12;
            int tabIndex = 0;

            this.SuspendLayout();

            foreach (SudijskaUloga u in uloge)
            {
                this.Controls.Add(createCheckBox(
                                      u, new Point(x, y), tabIndex, odbor.hasFunction(u)));
                y += 23;
                tabIndex++;
            }

            y += 12;
            btnOK.Location     = new Point(btnOK.Location.X, y);
            btnOK.TabIndex     = tabIndex;
            btnCancel.Location = new Point(btnCancel.Location.X, y);
            btnCancel.TabIndex = tabIndex + 1;

            this.ClientSize = new Size(ClientSize.Width, btnOK.Bottom + 23);

            this.ResumeLayout(false);
            this.PerformLayout();
        }
예제 #3
0
        public SelectSpravaForm(Sprava[] sprave, Sprava sprava)
        {
            InitializeComponent();
            Text = "Sprava";

            cmbSprava.DropDownStyle = ComboBoxStyle.DropDownList;
            foreach (Sprava s in sprave)
            {
                cmbSprava.Items.Add(Sprave.toString(s));
            }
            if (sprava == Sprava.Undefined)
            {
                cmbSprava.SelectedIndex = 0;
            }
            else
            {
                List <Sprava> sprave2       = new List <Sprava>(sprave);
                int           selectedIndex = sprave2.IndexOf(sprava);
                if (selectedIndex < 0)
                {
                    // Ovo se desava kada je sprava pauza, a moze da se bira samo izmedju sprava koje nisu pauze.
                    // Tada selektujem prvu spravu.
                    selectedIndex = 0;
                }
                cmbSprava.SelectedIndex = selectedIndex;
            }
        }
예제 #4
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            DialogResult dlgResult            = DialogResult.None;
            SelectGimnasticarUcesnikForm form = null;

            try
            {
                form      = new SelectGimnasticarUcesnikForm(takmicenjeId, gimnastika, null);
                dlgResult = form.ShowDialog();
            }
            catch (InfrastructureException ex)
            {
                MessageDialogs.showError(ex.Message, this.Text);
                return;
            }

            if (dlgResult != DialogResult.OK || form.SelectedEntities.Count == 0)
            {
                return;
            }

            bool   added = false;
            string msg   = String.Empty;

            foreach (GimnasticarUcesnik g in form.SelectedEntities)
            {
                StartListaNaSpravi startLista2 = raspored.getStartLista(g, startLista.Grupa, startLista.Rotacija);
                if (startLista2 != null && startLista2.Sprava != startLista.Sprava)
                {
                    msg += g.ImeSrednjeImePrezime + " (" + Sprave.toString(startLista2.Sprava) + ")\n";
                    continue;
                }
                if (startLista.addGimnasticar(g))
                {
                    added = true;
                }
            }

            if (msg != String.Empty)
            {
                MessageDialogs.showMessage("Sledeci gimnsticari nisu dodati jer vec postoje u rotaciji:\n\n" + msg,
                                           this.Text);
            }

            if (added)
            {
                dirty = true;
                spravaGridUserControl1.setItems(startLista.Nastupi);
                spravaGridUserControl1.clearSelection();
            }
        }
예제 #5
0
        public static void initRezultatiEkipno(DataGridViewUserControl dgw, Takmicenje takmicenje, bool kvalColumn,
                                               bool penalty)
        {
            dgw.DataGridView.Columns.Clear();

            dgw.AddColumn("Rank", "Rank", 40);
            dgw.AddColumn("Ekipa", "NazivEkipe", 170);

            Sprava[] sprave = Sprave.getSprave(takmicenje.Gimnastika);

            foreach (Sprava sprava in sprave)
            {
                string columnName = Sprave.toString(sprava);
                string propName   = columnName;
                int    width      = 50;
                if (sprava == Sprava.Konj)
                {
                    width    = 70;
                    propName = "Konj";
                }
                else if (sprava == Sprava.DvovisinskiRazboj)
                {
                    width    = 70;
                    propName = "DvovisinskiRazboj";
                }
                dgw.AddColumn(columnName, propName, width, "{0:F" + takmicenje.BrojDecimalaTotal + "}");
            }
            dgw.AddColumn("Ukupno", "Total", 50, "{0:F" + takmicenje.BrojDecimalaTotal + "}");

            if (penalty)
            {
                dgw.AddColumn("Pen.", "Penalty", 50, "{0:F" + takmicenje.BrojDecimalaPen + "}");
            }

            if (kvalColumn)
            {
                dgw.AddColumn("", "KvalStatus", 30);
            }
        }
예제 #6
0
        private void btnPrint_Click(object sender, EventArgs e)
        {
            string nazivIzvestaja = ActiveTakmicenje.getNazivIzvestajaSprava(deoTakKod, takmicenje.FinaleKupa, false);

            HeaderFooterForm form = new HeaderFooterForm(deoTakKod, false, true, true, false, false, false, false);

            if (!Opcije.Instance.HeaderFooterInitialized)
            {
                FormUtil.initHeaderFooterFormFromOpcije(form);

                string mestoDatum = takmicenje.Mesto + "  "
                                    + takmicenje.Datum.ToShortDateString();
                form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv;
                form.Header2Text = mestoDatum;
                form.Header3Text = ActiveTakmicenje.Kategorija.Naziv;
                form.Header4Text = nazivIzvestaja;
                form.FooterText  = mestoDatum;
            }
            else
            {
                FormUtil.initHeaderFooterFormFromOpcije(form);
                form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv;
                form.Header3Text = ActiveTakmicenje.Kategorija.Naziv;
                form.Header4Text = nazivIzvestaja;
            }

            if (form.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            FormUtil.initHeaderFooterFromForm(form);
            Opcije.Instance.HeaderFooterInitialized = true;

            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            try
            {
                string documentName;
                if (form.StampajSveSprave)
                {
                    documentName = nazivIzvestaja + " - " + ActiveTakmicenje.Kategorija.Naziv;
                }
                else
                {
                    documentName = nazivIzvestaja + " - " + Sprave.toString(ActiveSprava) + " - "
                                   + ActiveTakmicenje.Kategorija.Naziv;
                }
                bool obaPreskoka = ActiveTakmicenje.Propozicije.racunajObaPreskoka(deoTakKod);

                PreviewDialog p = new PreviewDialog();
                if (form.StampajSveSprave)
                {
                    List <List <RezultatSprava> > rezultatiSprave  = new List <List <RezultatSprava> >();
                    List <RezultatPreskok>        rezultatiPreskok = null;

                    foreach (Sprava s in Sprave.getSprave(ActiveTakmicenje.Gimnastika))
                    {
                        if (s != Sprava.Preskok)
                        {
                            rezultatiSprave.Add(ActiveTakmicenje.getPoredakSprava(deoTakKod, s).getRezultati());
                        }
                        else
                        {
                            rezultatiPreskok = ActiveTakmicenje.getPoredakPreskok(deoTakKod).getRezultati();
                        }
                    }
                    p.setIzvestaj(new SpravaIzvestaj(rezultatiSprave, rezultatiPreskok,
                                                     obaPreskoka, ActiveTakmicenje.Gimnastika, kvalColumnVisible(), documentName, form.BrojSpravaPoStrani,
                                                     form.PrikaziPenalSprave, spravaGridUserControl1.DataGridViewUserControl.DataGridView,
                                                     /*markFirstRows*/ false, /*numRowsToMark*/ 0));
                }
                else
                {
                    if (ActiveSprava != Sprava.Preskok)
                    {
                        // TODO3: Implementiraj oznacavanje osvajaca medalja i za ostale izvestaje (gde treba).
                        // Takodje, uvedi odgovarajucu opciju u dijalogu za stampanje.
                        List <RezultatSprava> rezultati =
                            ActiveTakmicenje.getPoredakSprava(deoTakKod, ActiveSprava).getRezultati();
                        p.setIzvestaj(new SpravaIzvestaj(ActiveSprava, rezultati,
                                                         kvalColumnVisible(), documentName, form.PrikaziPenalSprave,
                                                         spravaGridUserControl1.DataGridViewUserControl.DataGridView,
                                                         /*markFirstRows*/ !kvalColumnVisible(), /*numRowsToMark*/ getNumMedalists(rezultati)));
                    }
                    else
                    {
                        List <RezultatPreskok> rezultati =
                            ActiveTakmicenje.getPoredakPreskok(deoTakKod).getRezultati();
                        p.setIzvestaj(new SpravaIzvestaj(obaPreskoka, rezultati,
                                                         kvalColumnVisible(), documentName, form.PrikaziPenalSprave,
                                                         spravaGridUserControl1.DataGridViewUserControl.DataGridView,
                                                         /*markFirstRows*/ !kvalColumnVisible(),
                                                         /*numRowsToMark*/ getNumMedalists(rezultati)));
                    }
                }

                p.ShowDialog();

                // TODO2: U izvestajima za spravu treba da bude i penalizacija, a
                // slika sprave treba da bude iznad izvestaja. Naziv kolone total
                // treba da bude "Total" (ili "Ukupno").

                // TODO2: U izvestajima treba da postoji i linija za organizatora
                // takmicenja (recimo Gimnasticki savez srbije), i treba da bude
                // prva (u vrhu papira)

                // TODO2: Uvedi opciju da li se zeli stampanje izvestaja sa ili bez
                // linija
            }
            catch (Exception ex)
            {
                MessageDialogs.showError(ex.Message, this.Text);
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
            }
        }
예제 #7
0
        private void btnStampajKvalifikante_Click(object sender, EventArgs e)
        {
            string nazivIzvestaja = "Finale po spravama - kvalifikanti i rezerve";

            HeaderFooterForm form = new HeaderFooterForm(deoTakKod, false, true, false, false, false, false, false);

            if (!Opcije.Instance.HeaderFooterInitialized)
            {
                FormUtil.initHeaderFooterFormFromOpcije(form);

                string mestoDatum = takmicenje.Mesto + "  "
                                    + takmicenje.Datum.ToShortDateString();
                form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv;
                form.Header2Text = mestoDatum;
                form.Header3Text = ActiveTakmicenje.Kategorija.Naziv;
                form.Header4Text = nazivIzvestaja;
                form.FooterText  = mestoDatum;
                if (takmicenje.Gimnastika == Gimnastika.ZSG)
                {
                    form.BrojSpravaPoStrani = 4;
                }
                else
                {
                    form.BrojSpravaPoStrani = 6;
                }
            }
            else
            {
                FormUtil.initHeaderFooterFormFromOpcije(form);
                form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv;
                form.Header3Text = ActiveTakmicenje.Kategorija.Naziv;
                form.Header4Text = nazivIzvestaja;
            }

            if (form.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            FormUtil.initHeaderFooterFromForm(form);
            Opcije.Instance.HeaderFooterInitialized = true;

            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            try
            {
                PreviewDialog p = new PreviewDialog();

                string documentName;
                if (form.StampajSveSprave)
                {
                    documentName = nazivIzvestaja + " - " + ActiveTakmicenje.Kategorija.Naziv;
                }
                else
                {
                    documentName = nazivIzvestaja + " - " + Sprave.toString(ActiveSprava) + " - "
                                   + ActiveTakmicenje.Kategorija.Naziv;
                }
                bool obaPresk = ActiveTakmicenje.Propozicije.Tak1PreskokNaOsnovuObaPreskoka;

                if (form.StampajSveSprave)
                {
                    List <List <RezultatSprava> > rezultatiSprave  = new List <List <RezultatSprava> >();
                    List <RezultatPreskok>        rezultatiPreskok = null;

                    foreach (Sprava s in Sprave.getSprave(ActiveTakmicenje.Gimnastika))
                    {
                        if (s != Sprava.Preskok)
                        {
                            rezultatiSprave.Add(ActiveTakmicenje.getPoredakSprava(deoTakKod, s).getKvalifikantiIRezerve());
                        }
                        else
                        {
                            rezultatiPreskok = ActiveTakmicenje.getPoredakPreskok(deoTakKod).getKvalifikantiIRezerve(obaPresk);
                        }
                    }
                    p.setIzvestaj(new KvalifikantiTak3Izvestaj(rezultatiSprave, rezultatiPreskok, obaPresk,
                                                               takmicenje.Gimnastika, documentName, form.BrojSpravaPoStrani,
                                                               spravaGridUserControl1.DataGridViewUserControl.DataGridView));
                }
                else
                {
                    if (ActiveSprava != Sprava.Preskok)
                    {
                        List <RezultatSprava> rezultati =
                            ActiveTakmicenje.getPoredakSprava(deoTakKod, ActiveSprava).getKvalifikantiIRezerve();
                        p.setIzvestaj(new KvalifikantiTak3Izvestaj(rezultati, ActiveSprava, documentName,
                                                                   spravaGridUserControl1.DataGridViewUserControl.DataGridView));
                    }
                    else
                    {
                        List <RezultatPreskok> rezultati =
                            ActiveTakmicenje.getPoredakPreskok(deoTakKod).getKvalifikantiIRezerve(obaPresk);
                        p.setIzvestaj(new KvalifikantiTak3Izvestaj(rezultati, obaPresk, documentName,
                                                                   spravaGridUserControl1.DataGridViewUserControl.DataGridView));
                    }
                }

                p.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageDialogs.showError(ex.Message, this.Text);
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
            }
        }
예제 #8
0
        private void btnPrint_Click(object sender, EventArgs e)
        {
            string nazivIzvestaja = ActiveTakmicenje.getNazivIzvestajaSprava(DeoTakmicenjaKod.Takmicenje1, true, true);

            HeaderFooterForm form = new HeaderFooterForm(DeoTakmicenjaKod.Takmicenje1,
                                                         false, true, false, false, false, false, false);

            if (!Opcije.Instance.HeaderFooterInitialized)
            {
                FormUtil.initHeaderFooterFormFromOpcije(form);

                string mestoDatum = takmicenje.Mesto + "  "
                                    + takmicenje.Datum.ToShortDateString();
                form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv;
                form.Header2Text = mestoDatum;
                form.Header3Text = ActiveTakmicenje.Kategorija.Naziv;
                form.Header4Text = nazivIzvestaja;
                form.FooterText  = mestoDatum;
            }
            else
            {
                FormUtil.initHeaderFooterFormFromOpcije(form);
                form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv;
                form.Header3Text = ActiveTakmicenje.Kategorija.Naziv;
                form.Header4Text = nazivIzvestaja;
            }

            if (form.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            FormUtil.initHeaderFooterFromForm(form);
            Opcije.Instance.HeaderFooterInitialized = true;

            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            try
            {
                PreviewDialog p = new PreviewDialog();

                string documentName;
                if (form.StampajSveSprave)
                {
                    documentName = nazivIzvestaja + " - " + ActiveTakmicenje.Kategorija.Naziv;
                }
                else
                {
                    documentName = nazivIzvestaja + " - " + Sprave.toString(ActiveSprava) + " - "
                                   + ActiveTakmicenje.Kategorija.Naziv;
                }
                if (form.StampajSveSprave)
                {
                    List <List <RezultatSpravaFinaleKupa> > rezultatiSprave = new List <List <RezultatSpravaFinaleKupa> >();

                    foreach (Sprava s in Sprave.getSprave(ActiveTakmicenje.Gimnastika))
                    {
                        rezultatiSprave.Add(ActiveTakmicenje.Takmicenje1.getPoredakSpravaFinaleKupa(s).getRezultati());
                    }
                    p.setIzvestaj(new SpravaFinaleKupaIzvestaj(rezultatiSprave, ActiveTakmicenje.Gimnastika,
                                                               kvalColumnVisible(), documentName, form.BrojSpravaPoStrani,
                                                               spravaGridUserControl1.DataGridViewUserControl.DataGridView));
                }
                else
                {
                    List <RezultatSpravaFinaleKupa> rezultati =
                        ActiveTakmicenje.Takmicenje1.getPoredakSpravaFinaleKupa(ActiveSprava).getRezultati();

                    p.setIzvestaj(new SpravaFinaleKupaIzvestaj(ActiveSprava, rezultati,
                                                               kvalColumnVisible(), documentName, spravaGridUserControl1.DataGridViewUserControl.DataGridView));
                }

                p.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageDialogs.showError(ex.Message, this.Text);
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
            }
        }
예제 #9
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (!rbtJednaSprava.Checked && !rbtDveSprave.Checked && !rbtTriSprave.Checked &&
                !rbtCetiriSprave.Checked && !rbtSestSprava.Checked)
            {
                MessageDialogs.showMessage("Izaberite broj sprava koje se rotiraju.", this.Text);
                DialogResult = DialogResult.None;
                return;
            }

            if (getBrojSprava() < aktivneSpraveRot1.Count)
            {
                string msg = "Niste izabrali dovoljan broj sprava koje se rotiraju.\n\n" +
                             "Broj sprava koje se rotiraju ne sme biti " +
                             "manji od broja sprava za koje postoje start liste na rotaciji 1.";
                MessageDialogs.showMessage(msg, this.Text);
                DialogResult = DialogResult.None;
                return;
            }

            foreach (Panel p in getAktivniPaneli())
            {
                if (getIzabraneSprave(p).Count != getBrojSprava())
                {
                    string msg;
                    if (getBrojSprava() != 1)
                    {
                        msg = String.Format("Izaberite {0} sprave po rotaciji.", getBrojSprava());
                    }
                    else
                    {
                        msg = String.Format("Izaberite jednu spravu po rotaciji.");
                    }
                    MessageDialogs.showMessage(msg, this.Text);
                    DialogResult = DialogResult.None;
                    return;
                }
            }

            if ((gimnastika == Gimnastika.MSG && getBrojSprava() != 6) ||
                gimnastika == Gimnastika.ZSG && getBrojSprava() != 4)
            {
                List <Sprava> izabraneSprave = getSveIzabraneSprave();
                foreach (Sprava s in Sprave.getSprave(gimnastika))
                {
                    if (izabraneSprave.IndexOf(s) == -1)
                    {
                        string msg = String.Format("Niste izabrali sve sprave.");
                        MessageDialogs.showMessage(msg, this.Text);
                        DialogResult = DialogResult.None;
                        return;
                    }
                }
            }

            this.aktivneSprave = new List <List <Sprava> >();
            if (gimnastika == Gimnastika.MSG)
            {
                if (getBrojSprava() == 1)
                {
                    this.aktivneSprave.Add(getIzabraneSprave(panel1));
                    this.aktivneSprave.Add(getIzabraneSprave(panel2));
                    this.aktivneSprave.Add(getIzabraneSprave(panel3));
                    this.aktivneSprave.Add(getIzabraneSprave(panel4));
                    this.aktivneSprave.Add(getIzabraneSprave(panel5));
                    this.aktivneSprave.Add(getIzabraneSprave(panel6));
                }
                else if (getBrojSprava() == 2)
                {
                    this.aktivneSprave.Add(getIzabraneSprave(panel1));
                    this.aktivneSprave.Add(getIzabraneSprave(panel1));
                    this.aktivneSprave.Add(getIzabraneSprave(panel2));
                    this.aktivneSprave.Add(getIzabraneSprave(panel2));
                    this.aktivneSprave.Add(getIzabraneSprave(panel3));
                    this.aktivneSprave.Add(getIzabraneSprave(panel3));
                }
                else if (getBrojSprava() == 3)
                {
                    this.aktivneSprave.Add(getIzabraneSprave(panel1));
                    this.aktivneSprave.Add(getIzabraneSprave(panel1));
                    this.aktivneSprave.Add(getIzabraneSprave(panel1));
                    this.aktivneSprave.Add(getIzabraneSprave(panel2));
                    this.aktivneSprave.Add(getIzabraneSprave(panel2));
                    this.aktivneSprave.Add(getIzabraneSprave(panel2));
                }
                else if (getBrojSprava() == 6)
                {
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                }
            }
            else
            {
                if (getBrojSprava() == 1)
                {
                    this.aktivneSprave.Add(getIzabraneSprave(panel7));
                    this.aktivneSprave.Add(getIzabraneSprave(panel8));
                    this.aktivneSprave.Add(getIzabraneSprave(panel9));
                    this.aktivneSprave.Add(getIzabraneSprave(panel10));
                }
                else if (getBrojSprava() == 2)
                {
                    this.aktivneSprave.Add(getIzabraneSprave(panel7));
                    this.aktivneSprave.Add(getIzabraneSprave(panel7));
                    this.aktivneSprave.Add(getIzabraneSprave(panel8));
                    this.aktivneSprave.Add(getIzabraneSprave(panel8));
                }
                else if (getBrojSprava() == 4)
                {
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                    this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika)));
                }
            }

            // Proveri da li su sve sprave koje su aktivne u rotaciji 1 medju izabranim spravama za rotaciju 1.
            foreach (Sprava s in aktivneSpraveRot1)
            {
                if (this.aktivneSprave[0].IndexOf(s) == -1)
                {
                    string msg = String.Format("Greska - na rotaciji 1 postoji start lista za spravu {0} koju " +
                                               "niste izabrali na rotaciji 1.", Sprave.toString(s));
                    MessageDialogs.showMessage(msg, "Greska");
                    this.aktivneSprave.Clear();
                    DialogResult = DialogResult.None;
                    return;
                }
            }
        }
예제 #10
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            IList <Ocena> selItems = getDataGridViewUserControl()
                                     .getSelectedItems <Ocena>();

            if (selItems.Count != 1)
            {
                return;
            }

            Ocena  ocena = selItems[0];
            string msg   = String.Format(
                "Da li zelite da izbrisete ocenu za gimnasticara '{0}', za spravu '{1}'?",
                ocena.Gimnasticar.ImeSrednjeImePrezime, Sprave.toString(ActiveSprava));

            if (!MessageDialogs.queryConfirmation(msg, this.Text))
            {
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);

                        DAOFactoryFactory.DAOFactory.GetOcenaDAO().Delete(ocena);

                        RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
                        Takmicenje1DAO           tak1DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO();
                        Takmicenje2DAO           tak2DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje2DAO();
                        Takmicenje3DAO           tak3DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje3DAO();
                        Takmicenje4DAO           tak4DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje4DAO();

                        IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByGimnasticar(ocena.Gimnasticar);
                        foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                        {
                            if (deoTakKod == DeoTakmicenjaKod.Takmicenje1)
                            {
                                rt.Takmicenje1.updateRezultatiOnOcenaDeleted(ocena, rt);
                                tak1DAO.Update(rt.Takmicenje1);
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje2 && rt.odvojenoTak2())
                            {
                                rt.Takmicenje2.ocenaDeleted(ocena, rt);
                                tak2DAO.Update(rt.Takmicenje2);
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje3 && rt.odvojenoTak3())
                            {
                                rt.Takmicenje3.ocenaDeleted(ocena, rt);
                                tak3DAO.Update(rt.Takmicenje3);
                            }
                        }

                        IList <RezultatskoTakmicenje> ekipnaRezTakmicenja = rezTakDAO.FindEkipnaTakmicenja(takmicenje.Id);
                        foreach (RezultatskoTakmicenje rt in ekipnaRezTakmicenja)
                        {
                            Ekipa ekipa = rt.findEkipa(ocena.Gimnasticar, deoTakKod);
                            if (ekipa == null)
                            {
                                continue;
                            }
                            List <RezultatUkupno> rezultati = RezultatskoTakmicenjeService
                                                              .findRezultatiUkupnoForEkipa(takmicenje.Id, ekipa);
                            if (deoTakKod == DeoTakmicenjaKod.Takmicenje1)
                            {
                                rt.Takmicenje1.updateRezultatEkipe(ekipa, rt, rezultati);
                                tak1DAO.Update(rt.Takmicenje1);
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje4 && rt.odvojenoTak4())
                            {
                                rt.Takmicenje4.updateRezultatEkipe(ekipa, rt, rezultati);
                                tak4DAO.Update(rt.Takmicenje4);
                            }
                        }

                        GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();
                        UcesnikTakmicenja2DAO ucTak2DAO     = DAOFactoryFactory.DAOFactory.GetUcesnikTakmicenja2DAO();
                        UcesnikTakmicenja3DAO ucTak3DAO     = DAOFactoryFactory.DAOFactory.GetUcesnikTakmicenja3DAO();

                        ISet <RezultatskoTakmicenje> rezTakSet = new HashSet <RezultatskoTakmicenje>();
                        foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                        {
                            rezTakSet.Add(rt);
                        }
                        foreach (RezultatskoTakmicenje rt in ekipnaRezTakmicenja)
                        {
                            rezTakSet.Add(rt);
                        }

                        foreach (RezultatskoTakmicenje rezTak in rezTakSet)
                        {
                            if (deoTakKod == DeoTakmicenjaKod.Takmicenje1)
                            {
                                foreach (GimnasticarUcesnik g in rezTak.Takmicenje1.Gimnasticari)
                                {
                                    if (gimUcesnikDAO.Contains(g))
                                    {
                                        gimUcesnikDAO.Evict(g);
                                    }
                                }
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje2)
                            {
                                foreach (UcesnikTakmicenja2 u in rezTak.Takmicenje2.Ucesnici)
                                {
                                    if (gimUcesnikDAO.Contains(u.Gimnasticar))
                                    {
                                        gimUcesnikDAO.Evict(u.Gimnasticar);
                                    }
                                    ucTak2DAO.Evict(u);
                                }
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje3)
                            {
                                foreach (UcesnikTakmicenja3 u in rezTak.Takmicenje3.Ucesnici)
                                {
                                    if (gimUcesnikDAO.Contains(u.Gimnasticar))
                                    {
                                        gimUcesnikDAO.Evict(u.Gimnasticar);
                                    }
                                    ucTak3DAO.Evict(u);
                                }
                            }
                        }

                        // NOTE: Ovde nisam mogao da koristim takmicenjeDAO.Update(takmicenje) jer mi prijavljuje gresku
                        // da u sesiji vec postoji drugi objekat sa istim Id-om (verovatno je dobavljen u nekom od metoda
                        // gore). Zato uvek koristim takmicenjeDAO.FindById(takmicenje.Id) kada apdejtujem LastModified da
                        // bih bio siguran da mi se ovakve greske nece pojavljivati.
                        takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id);
                        takmicenje.LastModified = DateTime.Now;
                        session.Transaction.Commit();
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showError(ex.Message, this.Text);
                Close();
                return;
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }

            List <Ocena> activeOcene = ocene[calculateOceneKey(ActiveKategorija, ActiveSprava)];

            activeOcene.Remove(ocena);

            setOcene(activeOcene);
        }