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); } } }
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); } }
public bool istiPolozaj(ElementTableItem other) { if (other == null) { return(false); } return(sprava == other.sprava && grupa == other.grupa && broj == other.broj); }
private void clearClipboard() { if (clipboard != null) { clipboard.Cutted = false; clipboard = null; panelTabela.Invalidate(); } }
private void mnPromeniVelicinuSlike_Click(object sender, EventArgs e) { if (clickedItem == null || clickedItem.Element == null || clickedItem.Slika == null) { return; } changingElement = clickedItem; enableTrackBar(); }
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); } }
private void mnCut_Click(object sender, EventArgs e) { if (clickedItem != null && clickedItem.Element != null) { clearClipboard(); clipboard = clickedItem; clipboard.Cutted = true; panelTabela.Invalidate(); panelTabela.Focus(); } }
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); } }
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; }
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); } }
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; } }
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(); }
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); } } }
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; }
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); } }
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); } }
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); }
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); } }
private void mnPromeniVelicinuSlike_Click(object sender, EventArgs e) { if (clickedItem == null || clickedItem.Element == null || clickedItem.Slika == null) return; changingElement = clickedItem; enableTrackBar(); }
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); }
public bool istiPolozaj(ElementTableItem other) { if (other == null) return false; return sprava == other.sprava && grupa == other.grupa && broj == other.broj; }
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]; }