Esempio n. 1
0
        private void paste(ElementTableItem from, ElementTableItem to)
        {
            if (to != null && to.Element == null &&
                from != null && from.Element != null && from.Sprava == to.Sprava)
            {
                try
                {
                    using (ISession session = NHibernateHelper.OpenSession())
                        using (session.BeginTransaction())
                        {
                            CurrentSessionContext.Bind(session);

                            Element element = from.Element;
                            element.promeniGrupuBroj(to.Grupa, to.Broj);
                            DAOFactoryFactory.DAOFactory.GetElementDAO().MakePersistent(element);
                            session.Transaction.Commit();

                            tabela.createItem(element.Broj, element, element.Sprava, element.Grupa,
                                              izabrani.ContainsKey(element.Id));
                            tabela.createItem(from.Broj, null, from.Sprava, from.Grupa, false);
                        }
                }
                finally
                {
                    CurrentSessionContext.Unbind(NHibernateHelper.SessionFactory);
                }
            }
        }
Esempio n. 2
0
        private void disableTrackBar()
        {
            lblVelicinaSlike.Enabled = false;
            trackBar1.Enabled        = false;
            if (changingElement == null)
            {
                return;
            }

            // snimi promenu velicine
            try
            {
                using (ISession session = NHibernateHelper.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        DAOFactoryFactory.DAOFactory.GetElementDAO().MakePersistent(changingElement.Element);
                        session.Transaction.Commit();

                        changingElement = null;
                    }
            }
            finally
            {
                CurrentSessionContext.Unbind(NHibernateHelper.SessionFactory);
            }
        }
Esempio n. 3
0
 public bool istiPolozaj(ElementTableItem other)
 {
     if (other == null)
     {
         return(false);
     }
     return(sprava == other.sprava && grupa == other.grupa && broj == other.broj);
 }
Esempio n. 4
0
        private void clearClipboard()
        {
            if (clipboard != null)
            {
                clipboard.Cutted = false;
                clipboard        = null;

                panelTabela.Invalidate();
            }
        }
Esempio n. 5
0
        private void mnPromeniVelicinuSlike_Click(object sender, EventArgs e)
        {
            if (clickedItem == null || clickedItem.Element == null ||
                clickedItem.Slika == null)
            {
                return;
            }

            changingElement = clickedItem;
            enableTrackBar();
        }
Esempio n. 6
0
        private void scrollItemToClientCenter(int broj)
        {
            ElementTableItem item = tabela.getItem(broj, selectedSprava(), selectedGrupa());

            if (item != null)
            {
                PointF center = item.Location +
                                new SizeF(item.Size.Width / 2, item.Size.Height / 2);
                scrollToClientCenter(center);
            }
        }
Esempio n. 7
0
        private void mnCut_Click(object sender, EventArgs e)
        {
            if (clickedItem != null && clickedItem.Element != null)
            {
                clearClipboard();
                clipboard        = clickedItem;
                clipboard.Cutted = true;

                panelTabela.Invalidate();
                panelTabela.Focus();
            }
        }
Esempio n. 8
0
 private void drawTezineHeader(Graphics g)
 {
     string[] tezine = { "A = 0,10", "B = 0,20", "C = 0,30", "D = 0,40",
                         "E = 0,50", "F = 0,60 (G = 0,70)" };
     for (int i = 0; i < 6; i++)
     {
         ElementTableItem item       = tabela.getElementItemAt(selectedSprava(), selectedGrupa(), 1, i + 1);
         RectangleF       tezinaRect = new RectangleF(
             xMargin + item.Location.X * zoom / 100, 0,
             item.Size.Width * zoom / 100, tezineHeaderHeightPxl);
         drawTezinaHeader(tezine[i], tezinaRect, g);
     }
 }
Esempio n. 9
0
        public void createItem(int broj, Element element, Sprava sprava, GrupaElementa grupa, bool select)
        {
            if (broj > getBrojVrsta(sprava, grupa) * 6)
            {
                extendItems(broj, sprava, grupa);
            }

            int i = getRowIndex(broj);
            int j = getColumnIndex(broj);
            ElementTableItem item = new ElementTableItem(sprava, grupa,
                                                         broj, element,
                                                         new PointF(j * elementSizePxl.Width, i * elementSizePxl.Height),
                                                         elementSizePxl, this);

            itemsMap[getElementiKey(sprava, grupa)][i, j] = item;
            item.Selected = select;
        }
Esempio n. 10
0
        private void createItems(Sprava sprava, GrupaElementa grupa)
        {
            List <Element> elementi = elementiMap[getElementiKey(sprava, grupa)];
            int            brojVrsta;

            if (elementi.Count > 0)
            {
                brojVrsta = (elementi[elementi.Count - 1].Broj - 1) / 6 + 1;
            }
            else
            {
                brojVrsta = 1;
            }
            if (brojVrsta % 4 != 0)
            {
                brojVrsta += 4 - brojVrsta % 4;
            }

            itemsMap[getElementiKey(sprava, grupa)] = new ElementTableItem[brojVrsta, 6];

            int maxBroj   = brojVrsta * 6;
            int elemIndex = 0;

            for (int broj = 1; broj <= maxBroj; broj++)
            {
                Element elem = null;
                if (elemIndex < elementi.Count && elementi[elemIndex].Broj == broj &&
                    !elementi[elemIndex].isVarijanta())
                {
                    elem = elementi[elemIndex++];
                    // preskoci varijante (ako ih slucajno ima)
                    while (elemIndex < elementi.Count &&
                           elementi[elemIndex].isVarijanta())
                    {
                        elemIndex++;
                    }
                }
                createItem(broj, elem, sprava, grupa, false);
            }
        }
Esempio n. 11
0
        private void zumirajFitWidth()
        {
            // zoom se dobija iz formule:
            // 2 * xMargin + getTabelaWidth() * zoom = panelTabela.Width

            if (currentIndex >= 0)
            {
                ElementTableItem currentItem = items[currentIndex];
                SizeF            itemSize    = currentItem.Size;
                float            width       = 2 * xMargin + itemSize.Width;
                float            height      = 2 * yMargin + itemSize.Height;
                float            newZoom;
                if (panelSlika.Width / width < panelSlika.Height / height)
                {
                    newZoom = (panelSlika.Width - 2 * xMargin) / itemSize.Width * 100;
                }
                else
                {
                    newZoom = (panelSlika.Height - 2 * yMargin) / itemSize.Height * 100;
                }

                /*if (width / height >= panelSlika.Width / panelSlika.Height)
                 * {
                 *  // item ceo staje unutar prozora
                 *  newZoom = (panelSlika.Width - 2 * xMargin) / itemSize.Width * 100;
                 * }
                 * else
                 * {
                 *  // item nece stati po visini unutar prozora, pa mora da se
                 *  // uracuna i sirina vertikalnog klizaca (kada se koristi
                 *  // automatsko skrolovanje, klizaci se nalaze UNUTAR klijent
                 *  // oblasti)
                 *  newZoom = (panelSlika.Width - 2 * xMargin -
                 *      SystemInformation.VerticalScrollBarWidth) / itemSize.Width * 100;
                 * }*/
                zumiraj(newZoom);
                fitWidth = true;
            }
        }
Esempio n. 12
0
        private void panelSlika_Paint(object sender, PaintEventArgs e)
        {
            float    scale = zoom / 100;
            Graphics g     = e.Graphics;

            //      g.TranslateTransform(xMargin, yMargin);
            g.ScaleTransform(scale, scale);

            PointF pt = panelSlika.AutoScrollPosition;  // vraca negativne koordinate

            pt    = new PointF(pt.X + xMargin, pt.Y + yMargin);
            pt.X /= scale;
            pt.Y /= scale;

            if (currentIndex >= 0)
            {
                // centriraj item
                ElementTableItem currentItem = items[currentIndex];
                float            x           = (panelSlika.ClientRectangle.Width - currentItem.Size.Width * scale) / 2;
                float            y           = (panelSlika.ClientRectangle.Height - currentItem.Size.Height * scale) / 2;
                currentItem.Location = new PointF(x / scale, y / scale);

                currentItem.draw(g, pt);
            }
            else
            {
                // draw empty item
                float  x        = (panelSlika.ClientRectangle.Width - elementSizePxl.Width * scale) / 2;
                float  y        = (panelSlika.ClientRectangle.Height - elementSizePxl.Height * scale) / 2;
                PointF location = new PointF(x / scale, y / scale);

                RectangleF rect = new RectangleF(location, elementSizePxl);
                rect.Offset(pt.X, pt.Y);

                g.FillRectangle(tabela.ItemBackroundBrush, rect);
                g.DrawRectangle(tabela.ItemBorderPen, rect.X, rect.Y, rect.Width, rect.Height);
            }
            drawTezinaGrupa();
        }
Esempio n. 13
0
        private void extendItems(int broj, Sprava sprava, GrupaElementa grupa)
        {
            int oldBrojVrsta = getBrojVrsta(sprava, grupa);

            if (broj > oldBrojVrsta * 6)
            {
                int newBrojVrsta = (broj - 1) / 6 + 1;
                if (newBrojVrsta % 4 != 0)
                {
                    newBrojVrsta += 4 - newBrojVrsta % 4;
                }
                ElementTableItem[,] newElementItems = new ElementTableItem[newBrojVrsta, 6];
                copyElementItems(newElementItems, itemsMap[getElementiKey(sprava, grupa)], oldBrojVrsta);
                itemsMap[getElementiKey(sprava, grupa)] = newElementItems;

                int from = oldBrojVrsta * 6 + 1;
                int to   = newBrojVrsta * 6;
                for (int k = from; k <= to; k++)
                {
                    createItem(k, null, sprava, grupa, false);
                }
            }
        }
Esempio n. 14
0
        public void createItem(int broj, Element element, Sprava sprava, GrupaElementa grupa, bool select)
        {
            if (broj > getBrojVrsta(sprava, grupa) * 6)
                extendItems(broj, sprava, grupa);

            int i = getRowIndex(broj);
            int j = getColumnIndex(broj);
            ElementTableItem item = new ElementTableItem(sprava, grupa,
                broj, element,
                new PointF(j * elementSizePxl.Width, i * elementSizePxl.Height),
                elementSizePxl, this);
            itemsMap[getElementiKey(sprava, grupa)][i, j] = item;
            item.Selected = select;
        }
Esempio n. 15
0
        private void extendItems(int broj, Sprava sprava, GrupaElementa grupa)
        {
            int oldBrojVrsta = getBrojVrsta(sprava, grupa);
            if (broj > oldBrojVrsta * 6)
            {
                int newBrojVrsta = (broj - 1) / 6 + 1;
                if (newBrojVrsta % 4 != 0)
                    newBrojVrsta += 4 - newBrojVrsta % 4;
                ElementTableItem[,] newElementItems = new ElementTableItem[newBrojVrsta, 6];
                copyElementItems(newElementItems, itemsMap[getElementiKey(sprava, grupa)], oldBrojVrsta);
                itemsMap[getElementiKey(sprava, grupa)] = newElementItems;

                int from = oldBrojVrsta * 6 + 1;
                int to = newBrojVrsta * 6;
                for (int k = from; k <= to; k++)
                    createItem(k, null, sprava, grupa, false);
            }
        }
Esempio n. 16
0
        private void createItems(Sprava sprava, GrupaElementa grupa)
        {
            List<Element> elementi = elementiMap[getElementiKey(sprava, grupa)];
            int brojVrsta;
            if (elementi.Count > 0)
                brojVrsta = (elementi[elementi.Count - 1].Broj - 1) / 6 + 1;
            else
                brojVrsta = 1;
            if (brojVrsta % 4 != 0)
                brojVrsta += 4 - brojVrsta % 4;

            itemsMap[getElementiKey(sprava, grupa)] = new ElementTableItem[brojVrsta, 6];

            int maxBroj = brojVrsta * 6;
            int elemIndex = 0;
            for (int broj = 1; broj <= maxBroj; broj++)
            {
                Element elem = null;
                if (elemIndex < elementi.Count && elementi[elemIndex].Broj == broj
                && !elementi[elemIndex].isVarijanta())
                {
                    elem = elementi[elemIndex++];
                    // preskoci varijante (ako ih slucajno ima)
                    while (elemIndex < elementi.Count
                    && elementi[elemIndex].isVarijanta())
                        elemIndex++;
                }
                createItem(broj, elem, sprava, grupa, false);
            }
        }
Esempio n. 17
0
        private void panelTabela_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Right)
            {
                return;
            }

            clickedItem = tabela.getItem(clientToTable(new PointF(e.X, e.Y)), selectedSprava(), selectedGrupa());
            if (clickedItem == null)
            {
                return;
            }

            bool showDodajElement         = true;
            bool showPromeniElement       = true;
            bool showPromeniVelicinuSlike = true;
            bool showBrisiElement         = true;
            bool showCut              = true;
            bool showPaste            = true;
            bool showIzaberiElement   = true;
            bool showIzaberiVarijantu = true;
            bool showSeparator1       = true;
            bool showSeparator2       = true;

            if (rezimRada == TabelaElemenataFormRezimRada.Select)
            {
                showDodajElement         = false;
                showPromeniElement       = false;
                showPromeniVelicinuSlike = false;
                showBrisiElement         = false;
                showCut            = false;
                showPaste          = false;
                showIzaberiElement = clickedItem.Element != null;

                if (clickedItem.Element != null &&
                    !clickedItem.Element.isVarijanta() &&
                    clickedItem.Element.Varijante.Count > 0)
                {
                    showIzaberiVarijantu = true;
                    mnIzaberiVarijantu.DropDownItems.Clear();
                    foreach (Element elem in clickedItem.Element.Varijante)
                    {
                        ToolStripMenuItem item =
                            new ToolStripMenuItem(elem.VarijantaString);
                        item.Tag     = elem;
                        item.Checked = izabrani.ContainsKey(elem.Id);
                        item.Click  += mnIzaberiVarijantu_Click;
                        mnIzaberiVarijantu.DropDownItems.Add(item);
                    }
                }
                else
                {
                    showIzaberiVarijantu = false;
                }
            }
            else
            {
                showIzaberiElement   = false;
                showIzaberiVarijantu = false;
                if (clickedItem.Element != null)
                {
                    showDodajElement         = false;
                    showPromeniElement       = true;
                    showPromeniVelicinuSlike = clickedItem.Element.Slike.Count > 0;
                    showBrisiElement         = true;
                    showCut   = true;
                    showPaste = false;
                }
                else
                {
                    showDodajElement         = true;
                    showPromeniElement       = false;
                    showPromeniVelicinuSlike = false;
                    showBrisiElement         = false;
                    showCut   = false;
                    showPaste = clipboard != null &&
                                clipboard.Sprava == clickedItem.Sprava;
                }
            }

            bool sector1Visible = showDodajElement || showPromeniElement ||
                                  showPromeniVelicinuSlike || showBrisiElement;
            bool sector2Visible = showCut || showPaste;
            bool sector3Visible = showIzaberiElement || showIzaberiVarijantu;

            showSeparator1 = sector1Visible && (sector2Visible || sector3Visible);
            showSeparator2 = sector3Visible && (sector1Visible || sector2Visible);
            if (showSeparator1 && showSeparator2 && !sector3Visible)
            {
                showSeparator2 = false;
            }

            mnDodajElement.Visible         = showDodajElement;
            mnPromeniElement.Visible       = showPromeniElement;
            mnPromeniVelicinuSlike.Visible = showPromeniVelicinuSlike;
            mnBrisiElement.Visible         = showBrisiElement;
            mnCut.Visible              = showCut;
            mnPaste.Visible            = showPaste;
            mnIzaberiElement.Visible   = showIzaberiElement;
            mnIzaberiVarijantu.Visible = showIzaberiVarijantu;
            mnSeparator1.Visible       = showSeparator1;
            mnSeparator2.Visible       = showSeparator2;

            Element element = null;

            if (clickedItem != null)
            {
                element = clickedItem.Element;
            }
            mnIzaberiElement.Checked = element != null &&
                                       izabrani.ContainsKey(element.Id);

            contextMenuTabela.Show(panelTabela, e.Location);
        }
Esempio n. 18
0
        private void clearClipboard()
        {
            if (clipboard != null)
            {
                clipboard.Cutted = false;
                clipboard = null;

                panelTabela.Invalidate();
            }
        }
Esempio n. 19
0
        private void mnCut_Click(object sender, EventArgs e)
        {
            if (clickedItem != null && clickedItem.Element != null)
            {
                clearClipboard();
                clipboard = clickedItem;
                clipboard.Cutted = true;

                panelTabela.Invalidate();
                panelTabela.Focus();
            }
        }
Esempio n. 20
0
        private void disableTrackBar()
        {
            lblVelicinaSlike.Enabled = false;
            trackBar1.Enabled = false;
            if (changingElement == null)
                return;

            // snimi promenu velicine
            try
            {
                using (ISession session = NHibernateHelper.OpenSession())
                using (session.BeginTransaction())
                {
                    CurrentSessionContext.Bind(session);
                    DAOFactoryFactory.DAOFactory.GetElementDAO().MakePersistent(changingElement.Element);
                    session.Transaction.Commit();

                    changingElement = null;
                }
            }
            finally
            {
                CurrentSessionContext.Unbind(NHibernateHelper.SessionFactory);
            }
        }
Esempio n. 21
0
        private void mnPromeniVelicinuSlike_Click(object sender, EventArgs e)
        {
            if (clickedItem == null || clickedItem.Element == null
            || clickedItem.Slika == null)
                return;

            changingElement = clickedItem;
            enableTrackBar();
        }
Esempio n. 22
0
        private void panelTabela_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Right)
                return;

            clickedItem = tabela.getItem(clientToTable(new PointF(e.X, e.Y)), selectedSprava(), selectedGrupa());
            if (clickedItem == null)
                return;

            bool showDodajElement = true;
            bool showPromeniElement = true;
            bool showPromeniVelicinuSlike = true;
            bool showBrisiElement = true;
            bool showCut = true;
            bool showPaste = true;
            bool showIzaberiElement = true;
            bool showIzaberiVarijantu = true;
            bool showSeparator1 = true;
            bool showSeparator2 = true;

            if (rezimRada == TabelaElemenataFormRezimRada.Select)
            {
                showDodajElement = false;
                showPromeniElement = false;
                showPromeniVelicinuSlike = false;
                showBrisiElement = false;
                showCut = false;
                showPaste = false;
                showIzaberiElement = clickedItem.Element != null;

                if (clickedItem.Element != null
                && !clickedItem.Element.isVarijanta()
                && clickedItem.Element.Varijante.Count > 0)
                {
                    showIzaberiVarijantu = true;
                    mnIzaberiVarijantu.DropDownItems.Clear();
                    foreach (Element elem in clickedItem.Element.Varijante)
                    {
                        ToolStripMenuItem item =
                            new ToolStripMenuItem(elem.VarijantaString);
                        item.Tag = elem;
                        item.Checked = izabrani.ContainsKey(elem.Id);
                        item.Click += mnIzaberiVarijantu_Click;
                        mnIzaberiVarijantu.DropDownItems.Add(item);
                    }
                }
                else
                    showIzaberiVarijantu = false;
            }
            else
            {
                showIzaberiElement = false;
                showIzaberiVarijantu = false;
                if (clickedItem.Element != null)
                {
                    showDodajElement = false;
                    showPromeniElement = true;
                    showPromeniVelicinuSlike = clickedItem.Element.Slike.Count > 0;
                    showBrisiElement = true;
                    showCut = true;
                    showPaste = false;
                }
                else
                {
                    showDodajElement = true;
                    showPromeniElement = false;
                    showPromeniVelicinuSlike = false;
                    showBrisiElement = false;
                    showCut = false;
                    showPaste = clipboard != null
                        && clipboard.Sprava == clickedItem.Sprava;
                }
            }

            bool sector1Visible = showDodajElement || showPromeniElement
                || showPromeniVelicinuSlike || showBrisiElement;
            bool sector2Visible = showCut || showPaste;
            bool sector3Visible = showIzaberiElement || showIzaberiVarijantu;

            showSeparator1 = sector1Visible && (sector2Visible || sector3Visible);
            showSeparator2 = sector3Visible && (sector1Visible || sector2Visible);
            if (showSeparator1 && showSeparator2 && !sector3Visible)
            {
                showSeparator2 = false;
            }

            mnDodajElement.Visible = showDodajElement;
            mnPromeniElement.Visible = showPromeniElement;
            mnPromeniVelicinuSlike.Visible = showPromeniVelicinuSlike;
            mnBrisiElement.Visible = showBrisiElement;
            mnCut.Visible = showCut;
            mnPaste.Visible = showPaste;
            mnIzaberiElement.Visible = showIzaberiElement;
            mnIzaberiVarijantu.Visible = showIzaberiVarijantu;
            mnSeparator1.Visible = showSeparator1;
            mnSeparator2.Visible = showSeparator2;

            Element element = null;
            if (clickedItem != null)
                element = clickedItem.Element;
            mnIzaberiElement.Checked = element != null
                && izabrani.ContainsKey(element.Id);

            contextMenuTabela.Show(panelTabela, e.Location);
        }
Esempio n. 23
0
        private void paste(ElementTableItem from, ElementTableItem to)
        {
            if (to != null && to.Element == null
            && from != null && from.Element != null && from.Sprava == to.Sprava)
            {
                try
                {
                    using (ISession session = NHibernateHelper.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);

                        Element element = from.Element;
                        element.promeniGrupuBroj(to.Grupa, to.Broj);
                        DAOFactoryFactory.DAOFactory.GetElementDAO().MakePersistent(element);
                        session.Transaction.Commit();

                        tabela.createItem(element.Broj, element, element.Sprava, element.Grupa,
                            izabrani.ContainsKey(element.Id));
                        tabela.createItem(from.Broj, null, from.Sprava, from.Grupa, false);
                    }
                }
                finally
                {
                    CurrentSessionContext.Unbind(NHibernateHelper.SessionFactory);
                }
            }
        }
Esempio n. 24
0
 public bool istiPolozaj(ElementTableItem other)
 {
     if (other == null)
         return false;
     return sprava == other.sprava && grupa == other.grupa && broj == other.broj;
 }
Esempio n. 25
0
 private void copyElementItems(ElementTableItem[,] newElementItems,
     ElementTableItem[,] elementItems, int brojVrsta)
 {
     for (int i = 0; i < brojVrsta; i++)
         for (int j = 0; j < 6; j++)
             newElementItems[i, j] = elementItems[i, j];
 }