public void selektovanjeBodovanihCellClick()
        {
            // TODO: U rezimu selektovanja vezbi koje se boduju, trebalo bi da se
            // sakrije trenutno selektovana celija, i da ne bude moguce menjanje celija
            // U normalnom rezimu, kada se selektuje celija u read onlu koloni, boja bi
            // trebala da bude kao i boja vrste (ili bela ili boja bodovanog
            // elementa) - dakle ne bi trebala da se vidi selekcija
            ElementVezbe selectedElement = view.SelectedElement;

            if (selectedElement != null)
            {
                if (!selectedElement.BodujeSe)
                {
                    // TODO: Mozda bi trebalo prikazati poruku ukoliko uslov
                    // if naredbe nije ispunjen
                    if (vezba.canSelektujElement(selectedElement.RedBroj))
                    {
                        selectedElement.BodujeSe = true;
                        view.markSelectedElementRow(true);
                        view.updateGridFooter();
                        modified = true;
                    }
                }
                else
                {
                    selectedElement.BodujeSe = false;
                    view.markSelectedElementRow(false);
                    view.updateGridFooter();
                    modified = true;
                }
            }
        }
        private void dodajElemente(List <Element> elementi)
        {
            bool dodajNaTrenutnuPoziciju = true;
            int  index = vezba.Elementi.Count;

            if (dodajNaTrenutnuPoziciju)
            {
                ElementVezbe selectedElement = view.SelectedElement;
                if (selectedElement != null)
                {
                    index = selectedElement.RedBroj - 1;
                }
            }

            view.startBatchUpdate();
            foreach (Element elem in elementi)
            {
                ElementVezbe ev = new ElementVezbe(elem.Naziv, elem.EngleskiNaziv,
                                                   elem.IsTablicniElement, elem.Grupa, elem.Tezina, elem.Broj,
                                                   elem.PodBroj);
                vezba.DodajElement(index++, ev);
                view.insertElementRow(ev);
            }
            if (dodajNaTrenutnuPoziciju)
            {
                view.updateRedBrojColumn();
            }

            // selektuj zadnji dodat element
            view.selectElementCell(index, view.getSelectedColumn());
            view.endBatchUpdate();

            modified = true;
        }
        public void deleteElement()
        {
            ElementVezbe selectedElement = view.SelectedElement;

            if (selectedElement != null)
            {
                string message = string.Format("Da li zelite da izbrisete " +
                                               "element \"{0}\"?", selectedElement.NazivElementa);
                bool choice = view.queryConfirmation(message);
                if (choice)
                {
                    try
                    {
                        vezba.UkloniElement(selectedElement);
                        view.ukloniElementGridRow(selectedElement.RedBroj);
                        view.updateRedBrojColumn();
                        view.updateGridFooter();
                        modified = true;
                    }
                    catch (Exception ex)
                    {
                        message = string.Format("Problem prilikom pokusaja brisanja " +
                                                "elementa \"{0}\". \n{1}", selectedElement.NazivElementa, ex.Message);
                        view.showMessage(message);
                    }
                }
            }
        }
示例#4
0
 public override void insertElementRow(ElementVezbe e)
 {
     vezbaTabela = null;
     if (!batchUpdate)
     {
         updateGrid();
     }
 }
        public void moveElementDown()
        {
            ElementVezbe selectedElement = view.SelectedElement;

            if (selectedElement != null)
            {
                byte redBroj = selectedElement.RedBroj;
                if (vezba.moveElementUp(redBroj))
                {
                    view.updateElementRow(redBroj, vezba.Elementi[redBroj - 1]);
                    view.updateElementRow(redBroj + 1, vezba.Elementi[redBroj]);
                    view.selectElementCell(redBroj + 1, view.getSelectedColumn());
                    modified = true;
                }
            }
        }
示例#6
0
 private object[] getRowValues(ElementVezbe e)
 {
     if (e.Tezina != TezinaElementa.Undefined)
     {
         return new object[] { e.RedBroj, e.NazivElementa, e.Tezina,
                               e.GrupaBroj, e.Vrednost, e.VezaSaPrethodnim,
                               e.Zahtev, e.Odbitak, e.Penalizacija }
     }
     ;
     else
     {
         return new object[] { e.RedBroj, e.NazivElementa, null,
                               e.GrupaBroj, e.Vrednost, e.VezaSaPrethodnim,
                               e.Zahtev, e.Odbitak, e.Penalizacija }
     };
 }
        private void updateElementFromCell(int redBroj, int col)
        {
            ElementVezbe element    = vezba.Elementi[redBroj - 1];
            string       columnName = "";
            string       errMsg     = "";
            object       cellValue  = view.getElementCellValue(redBroj, col);

            try
            {
                columnName = view.getColumnName(col);
                switch (columnName)
                {
                case "Zahtev":
                    errMsg         = "Vrednost za zahtev mora da bude broj.";
                    element.Zahtev = parseFloatCell(cellValue);
                    break;

                case "Odbitak":
                    errMsg          = "Vrednost za odbitak mora da bude broj.";
                    element.Odbitak = parseFloatCell(cellValue);
                    break;

                case "Penalizacija":
                    errMsg = "Vrednost za penalizaciju mora da bude broj.";
                    element.Penalizacija = parseFloatCell(cellValue);
                    break;

                default:
                    break;
                }
            }
            catch (FormatException)
            {
                throw new GridException(errMsg, redBroj, columnName);
            }
            catch (InvalidPropertyException ex)
            {
                throw new GridException(ex.Message, redBroj, columnName, ex);
            }
        }
示例#8
0
        private void gridElementi_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            // TODO: Ispitaj kako moze da se optimizuje formatiranje
            if (isElementRow(e.RowIndex))
            {
                ElementVezbe    elem = Vezba.Elementi[e.RowIndex];
                DataGridViewRow row  = gridElementi.Rows[e.RowIndex];
                if (elem.BodujeSe)
                {
                    row.DefaultCellStyle.BackColor = bodujeSeBackColor;
                    row.DefaultCellStyle.ForeColor = bodujeSeForeColor;
                }
                else
                {
                    row.DefaultCellStyle.BackColor = gridElementi.DefaultCellStyle.BackColor;
                    row.DefaultCellStyle.ForeColor = gridElementi.DefaultCellStyle.ForeColor;
                }
            }

            string columnName = gridElementi.Columns[e.ColumnIndex].Name;

            if (isFloatCell(e.RowIndex, columnName))
            {
                if (e.Value != null)
                {
                    string format = gridElementi.Columns[e.ColumnIndex].
                                    DefaultCellStyle.Format;
                    string formattedValue;
                    if (tryFormatFloatCell(e.Value, format, out formattedValue))
                    {
                        e.Value             = formattedValue;
                        e.FormattingApplied = true;
                    }
                }
            }
        }
示例#9
0
        private string getItemCellText(int rowIndex, string column)
        {
            ElementVezbe element = vezba.Elementi[rowIndex];

            switch (column)
            {
            case "RedBroj":
                return(element.RedBroj.ToString());

            case "NazivElementa":
                return(element.NazivElementa);

            case "Tezina":
                if (element.Tezina != TezinaElementa.Undefined)
                {
                    return(element.Tezina.ToString());
                }
                else
                {
                    return("");
                }

            case "GrupaBroj":
                return(element.GrupaBroj);

            case "Vrednost":
                if (element.Vrednost != null)
                {
                    return(element.Vrednost.Value.ToString(getColumnFormatString("Vrednost")));
                }
                else
                {
                    return("");
                }

            case "VezaSaPrethodnim":
                // poseban se obradjuje
                return("");

            case "Zahtev":
                if (element.Zahtev != null)
                {
                    return(element.Zahtev.Value.ToString(getColumnFormatString("Zahtev")));
                }
                else
                {
                    return("");
                }

            case "Odbitak":
                if (element.Odbitak != null)
                {
                    return(element.Odbitak.Value.ToString(getColumnFormatString("Odbitak")));
                }
                else
                {
                    return("");
                }

            case "Penalizacija":
                if (element.Penalizacija != null)
                {
                    return(element.Penalizacija.Value.ToString(getColumnFormatString("Penalizacija")));
                }
                else
                {
                    return("");
                }

            default:
                return("");
            }
        }
示例#10
0
 public override void updateElementRow(int redBroj, ElementVezbe element)
 {
     throw new Exception("The method or operation should be implemented in inherited class.");
 }
示例#11
0
 public override void updateElementRow(int redBroj, ElementVezbe element)
 {
     disableAutomaticGridFooterUpdate();
     gridElementi.Rows[redBroj - 1].SetValues(getRowValues(element));
     enableAutomaticGridFooterUpdate();
 }
示例#12
0
 public override void insertElementRow(ElementVezbe e)
 {
     // ovo ne generise CellValueChanged event
     gridElementi.Rows.Insert(e.RedBroj - 1, getRowValues(e));
 }
示例#13
0
 public virtual void insertElementRow(ElementVezbe e)
 {
     throw new Exception("The method or operation should be implemented in inherited class.");
 }