Reseter2/Reseter2/Words/BilderWords.cs

355 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace Reseter2.Words
{
internal partial class BilderWords : Form
{
private Control control;
private bool DragOn;
public BilderWords()
{
InitializeComponent();
WordsList.MainCategory.
WordsCategory WCvebinar = new WordsCategory("Вебинарные");
WordsList.AddItem(WCvebinar, WordsList.MainCategory);
WordsList.AddItem(new WordsComp(new CompId("8.8..8")), WCvebinar);
WordsList.AddItem(new WordsComp(new CompId("8.8.3.8")), WCvebinar);
WordsList.AddItem(new WordsComp(new CompId("8.8.2.8")), WCvebinar);
WordsList.AddItem(new WordsComp(new CompId("8.8.1.8")), WCvebinar);
WordsList.AddItem(new WordsComp(new CompId("1ma00234")), WordsList.MainCategory);
WordsList.AddItem(new WordsComp(new CompId("1ma003333")), WordsList.MainCategory);
WordsCategory WCvebinar1 = new WordsCategory("Вебинарные");
WordsList.AddItem(WCvebinar1, WordsList.MainCategory);
WordsList.AddItem(new WordsComp(new CompId("8.8.8.8")), WCvebinar1);
WordsList.AddItem(new WordsComp(new CompId("8.8.8.2")), WCvebinar1);
WordsList.AddItem(new WordsComp(new CompId("8.8.8.3")), WCvebinar1);
WordsList.AddItem(new WordsComp(new CompId("8.8.8.1")), WCvebinar1);
WordsList.AddItem(new WordsComp(new CompId("1ma00234")), WordsList.MainCategory);
WordsList.AddItem(new WordsComp(new CompId("1ma003333")), WordsList.MainCategory);
//// TreeNode trno = new TreeNode("main");
treeView1.Nodes.AddRange(WordsList.ListNodes());
//trno.ImageIndex = 1;
cb_create.Items.Add("Категория");
cb_create.Items.Add("Компьютер");
cb_create.SelectedIndex = 0;
treeView1.ItemDrag += new ItemDragEventHandler(TreeView1_ItemDrag);
treeView1.DragEnter += new DragEventHandler(TreeView1_DragEnter);
treeView1.DragOver += new DragEventHandler(TreeView1_DragOver);
treeView1.DragDrop += new DragEventHandler(TreeView1_DragDrop);
}
private void TreeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
DragOn = true;
if (e.Button == MouseButtons.Left)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
//throw new NotImplementedException();
}
private void TreeView1_DragEnter(object sender, DragEventArgs e)
{
DragOn = true;
e.Effect = e.AllowedEffect;
}
private void TreeView1_DragOver(object sender, DragEventArgs e)
{
Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y));
treeView1.SelectedNode = treeView1.GetNodeAt(targetPoint);
}
private void TreeView1_DragDrop(object sender, DragEventArgs e)
{
DragOn = false;
int indexMod = 0;
int index = 0;
Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y));
TreeNode selectNode = treeView1.GetNodeAt(targetPoint);
TreeNode moveNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
if(selectNode == null)
{
// indexMod = 1;
}
else
{
int PointH = targetPoint.Y - selectNode.Bounds.Y;
if (PointH > 6) indexMod = 1;
}
//if (!((IWordsItem)moveNode.Tag).ChekMove((IWordsItem)selectNode.Tag)) return;
WordsCategory DstCategory;
TreeNodeCollection DstNodes;
if (selectNode == null)
{
DstCategory = WordsList.MainCategory;
DstNodes = treeView1.Nodes;
if(targetPoint.Y < 5)
{
index = 0;
}
else
{
index = treeView1.Nodes.Count;
}
}
else if (selectNode.Tag is WordsCategory)
{
DstCategory = (WordsCategory)selectNode.Tag;
DstNodes = selectNode.Nodes;
selectNode.Expand();
// index = 1;
}
else if (selectNode.Parent == null)
{
DstCategory = WordsList.MainCategory;
DstNodes = treeView1.Nodes;
index = selectNode.Index + indexMod;
}
else
{
DstCategory = (WordsCategory)selectNode.Parent.Tag;
DstNodes = selectNode.Parent.Nodes;
index = selectNode.Index + indexMod;
}
WordsCategory SrcCategory;
TreeNodeCollection SrcNodes;
if (moveNode == null)
{
SrcCategory = WordsList.MainCategory;
SrcNodes = treeView1.Nodes;
}
else if (moveNode.Parent == null)
{
SrcCategory = WordsList.MainCategory;
SrcNodes = treeView1.Nodes;
}
else
{
SrcCategory = (WordsCategory)moveNode.Parent.Tag;
SrcNodes = moveNode.Parent.Nodes;
}
if(SrcCategory == DstCategory)
{
if(selectNode == null)
{
if (targetPoint.Y > 5) index--;
}
else if (moveNode.Index < selectNode.Index) index--;
}
IWordsItem MoveItem = (IWordsItem)moveNode.Tag;
if (!MoveItem.ChekMove(DstCategory)) return;
WordsList.MoveItem(index, MoveItem, SrcCategory, DstCategory);
// treeView1.Nodes.Clear();
// treeView1.Nodes.AddRange(WordsList.ListNodes());
SrcNodes.Remove(moveNode);
DstNodes.Insert(index, moveNode);
}
public BilderWords(WordsCategory category):base()
{
}
public BilderWords(WordsComp item) : base()
{
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node != null && !DragOn)
{
if (e.Node.Tag is WordsComp)
{
WordsComp wordsComp = (WordsComp)e.Node.Tag;
control = new WordsEditCompControl(wordsComp, e.Node, imageList1);
panel1.Controls.Add(control);
}
if (e.Node.Tag is WordsCategory)
{
WordsCategory wordsCategory = (WordsCategory)e.Node.Tag;
control = new WordsEditCategoryControl(wordsCategory, e.Node);
panel1.Controls.Add(control);
}
}
}
private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if(control != null && !DragOn)
{
control.Visible = false;
control.Dispose();
}
}
private void bt_new_Click(object sender, EventArgs e)
{
WordsCategory ParentCategory;
TreeNode selectNode = treeView1.SelectedNode;
TreeNodeCollection ParentNodes;
int index = 0;
if(selectNode == null)
{
ParentCategory = WordsList.MainCategory;
ParentNodes = treeView1.Nodes;
}
else if(selectNode.Tag is WordsCategory)
{
ParentCategory = (WordsCategory)selectNode.Tag;
ParentNodes = selectNode.Nodes;
selectNode.Expand();
}
else if (selectNode.Parent == null)
{
ParentCategory = WordsList.MainCategory;
ParentNodes = treeView1.Nodes;
index = selectNode.Index+1;
}
else
{
ParentCategory = (WordsCategory)selectNode.Parent.Tag;
ParentNodes = selectNode.Parent.Nodes;
index = selectNode.Index+1;
}
object item = null;
TreeNode treeNode = new TreeNode();
switch (cb_create.SelectedIndex)
{
case 0:
item = new WordsCategory("Новая категория");
index = 0;
WordsList.InsertItem(index, (WordsCategory)item, ParentCategory);
treeNode.ImageIndex = 0;
treeNode.SelectedImageIndex = 0;
treeNode.Text = "Новая категория";
break;
case 1:
item = new WordsComp(new CompId("Новый ПК"));
WordsList.InsertItem(index, (WordsComp)item, ParentCategory);
treeNode.ImageIndex = 1;
treeNode.SelectedImageIndex = 1;
treeNode.Text = "Новый ПК";
break;
}
treeNode.Tag = item;
ParentNodes.Insert(index,treeNode);
}
private void BilderWords_FormClosing(object sender, FormClosingEventArgs e)
{
bool save = false;
}
private void bt_deleteItem_Click(object sender, EventArgs e)
{
TreeNode selectNode = treeView1.SelectedNode;
if (selectNode == null) return;
WordsCategory ParentCategory;
TreeNodeCollection ParentNodes;
treeView1.SelectedNode = null;
control.Visible = false;
control.Dispose();
if (selectNode.Parent == null)
{
ParentCategory = WordsList.MainCategory;
ParentNodes = treeView1.Nodes;
}
else
{
ParentCategory = (WordsCategory)selectNode.Parent.Tag;
ParentNodes = selectNode.Parent.Nodes;
}
if (selectNode.Tag == null) return;
IWordsItem wordsItem = (IWordsItem)selectNode.Tag;
ParentCategory.DeleteItem(wordsItem);
ParentNodes.Remove(selectNode);
}
private void treeView1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
TreeNode tr = treeView1.GetNodeAt(e.X, e.Y);
if (tr == null || !(tr.Bounds.X < e.X && (tr.Bounds.Width + tr.Bounds.X) > e.X))
{
if (control != null && !DragOn)
{
control.Visible = false;
control.Dispose();
}
treeView1.SelectedNode = null;
}
}
else if (e.Button == MouseButtons.Right)
{
if (control != null && !DragOn)
{
control.Visible = false;
control.Dispose();
}
treeView1.SelectedNode = null;
}
}
private void treeView1_KeyDown(object sender, KeyEventArgs e)
{
}
private void panel2_MouseDown(object sender, MouseEventArgs e)
{
}
}
}