示例#1
0
        public static Grid InvokeNacrtaj(Tabela tabela, ApplicationViewModel vm)
        {
            // objekat za XAML Grid koji sadrzi zaglavlje i sadrzaj
            KontejnerGrid tabelaGrid = new KontejnerGrid(vm);

            tabelaGrid.Tag = tabela.RootKolona;

            //vvranic - i ovde isto kao i gore
            tabelaGrid.DataContext = vm.TrenutniProjekat;

            Border bord = (Border)tabelaGrid.Children[1];
            Grid   tabelaContentGrid = (Grid)bord.Child;

            tabelaGrid.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;   // float left

            //ubacen border pa mora ovako da se izvuce
            Border border = ((Border)((Grid)tabelaGrid.Children[0]).Children[0]);

            ((Label)((Grid)border.Child).Children[0]).Content = tabela.Naslov;

            // 10.06.2018. mstankovic
            //for (int i = 0; i < ((KontejnerFaza)tabela.RootKolona).Deca.Count; i++)
            for (int i = 0; i < (tabela.RootKolona).Deca.Count; i++)
            {
                ColumnDefinition c = new ColumnDefinition();
                c.Width = System.Windows.GridLength.Auto;
                tabelaContentGrid.ColumnDefinitions.Add(c);
            }
            // 10.06.2018. mstankovic
            //foreach (Kontejner k in ((KontejnerFaza)tabela.RootKolona).Deca)
            foreach (Kontejner k in (tabela.RootKolona).Deca)
            {
                Nacrtaj(k, tabelaGrid, vm);
            }
            return(tabelaGrid);
        }
示例#2
0
        //mora da se prodje kroz celo stablo i da se izracuna max broj zadataka u deci i na osnovu toga odredi velicina svake kolone
        public static void Nacrtaj(Kontejner kolona, IKontejnerGrid parentGrid, ApplicationViewModel vm)
        {
            bool           isKontejnerFaza = false;
            IKontejnerGrid kolonaGrid;
            Border         bor1;
            Border         bor2;

            if (kolona.GetType() == typeof(KontejnerFaza))
            {
                kolonaGrid = new KontejnerGrid(vm);
                bor1       = (Border)((Grid)kolonaGrid).Children[1];
            }
            else
            {
                kolonaGrid = new KontejnerZadGrid(vm);
                bor1       = (Border)((KontejnerZadGrid)kolonaGrid).Children[1];
            }

            if (parentGrid.GetType() == typeof(KontejnerGrid))
            {
                bor2            = (Border)((KontejnerGrid)parentGrid).Children[1];
                isKontejnerFaza = true;
            }
            else
            {
                bor2            = (Border)((KontejnerZadGrid)parentGrid).Children[1];
                isKontejnerFaza = false;
            }
            //stavlja se pokazivac na model podataka kolonu koja stoji iza kontrole
            ((Grid)kolonaGrid).Tag = kolona;
            //vvranic - treba da se testira da li ovo radi
            ((Grid)kolonaGrid).DataContext = vm.TrenutniProjekat;

            Grid kolonaContentGrid = (Grid)bor1.Child;
            Grid parentContentGrid = (Grid)bor2.Child;

            ((Grid)kolonaGrid).HorizontalAlignment = System.Windows.HorizontalAlignment.Center;

            IEnumerable <Label> tekst = FindVisualChildren <Label>((Grid)kolonaGrid);

            tekst.ElementAt(0).Content = kolona.Ime;

            int index = 0;

            //trazi index u listi dece na kom se nalazi trenutna kolona
            if (kolona.Roditelj != null)
            {
                // 10.06.2018. mstankovic
                //index = ((KontejnerFaza)kolona.Roditelj).Deca.IndexOf(kolona);
                index = (kolona.Roditelj).Deca.IndexOf(kolona);

                if (kolona.Roditelj.IsVerticalSplit)
                {
                    parentContentGrid.Children.Add((Grid)kolonaGrid);
                    ((Grid)kolonaGrid).SetValue(Grid.ColumnProperty, index);
                }
                else //deli se horizontalno
                {
                    parentContentGrid.Children.Add((Grid)kolonaGrid);
                    ((Grid)kolonaGrid).SetValue(Grid.RowProperty, index);
                }
            }

            //najpre se ispita da li trenutna kolona sadrzi kolone ili zadatke
            //jer se crtaju razlicito
            if (kolona.GetType() == typeof(KontejnerFaza))
            {
                //ako se deli vertikalno dodaju se definicije za kolone u zavisnosti od toga koliko ima dece
                if (((KontejnerFaza)kolona).IsVerticalSplit == true)
                {
                    for (int i = 0; i < ((KontejnerFaza)kolona).Deca.Count; i++)
                    {
                        ColumnDefinition c = new ColumnDefinition();
                        c.Width = System.Windows.GridLength.Auto;
                        kolonaContentGrid.ColumnDefinitions.Add(c);
                    }
                }
                else
                {
                    //ako se deli vertikalno dodaju se definicije za vrste u zavisnosti od toga koliko ima dece
                    for (int i = 0; i < ((KontejnerFaza)kolona).Deca.Count; i++)
                    {
                        RowDefinition r = new RowDefinition();
                        r.Height = System.Windows.GridLength.Auto;
                        kolonaContentGrid.RowDefinitions.Add(r);
                    }
                }

                foreach (Kontejner d in ((KontejnerFaza)kolona).Deca)
                {
                    //za svaku podfazu odradi ovo
                    Nacrtaj(d, kolonaGrid, vm);
                }
            }
            else //ako je KontejnerZadataka
            {
                // dodavanje Column definicija
                for (int i = 0; i < ((KontejnerZadataka)kolona).SirinaPoZadacima; i++)
                {
                    ColumnDefinition c = new ColumnDefinition();
                    c.Width = GridLength.Auto;
                    kolonaContentGrid.ColumnDefinitions.Add(c);
                }

                // dodavanje Row definicija
                for (int i = 0; i < ((KontejnerZadataka)kolona).VisinaPoZadacima; i++)
                {
                    RowDefinition r = new RowDefinition();
                    r.Height = GridLength.Auto;
                    kolonaContentGrid.RowDefinitions.Add(r);
                }

                // smestanje zadataka u matricu (tj. u grid)
                for (int i = 0; i < ((KontejnerZadataka)kolona).Zadaci.Count; i++)
                {
                    ZadatakGrid zad = new ZadatakGrid(vm);

                    //stavlja se data context kontroli
                    zad.DataContext = ((KontejnerZadataka)kolona).Zadaci[i];

                    kolonaContentGrid.Children.Add(zad);
                    zad.SetValue(Grid.RowProperty, ((KontejnerZadataka)kolona).Zadaci[i].Row);
                    zad.SetValue(Grid.ColumnProperty, ((KontejnerZadataka)kolona).Zadaci[i].Column);
                }
            }
        }