Archived
WIP: treeview context
This commit is contained in:
1 parent
d575c66ed9
commit
bbbd85380e
5 files changed
+880
-370
No files matched your search
+271
-235
@@ -239,6 +239,240 @@ namespace RyzStudio.Windows.Forms
|
||||
|
||||
}
|
||||
|
||||
|
||||
#region integrated behaviour
|
||||
|
||||
protected override void OnItemDrag(ItemDragEventArgs e)
|
||||
{
|
||||
base.OnItemDrag(e);
|
||||
|
||||
draggingNode = (TreeNode)e.Item;
|
||||
DoDragDrop(e.Item, DragDropEffects.Move);
|
||||
}
|
||||
|
||||
protected override void OnDragDrop(DragEventArgs e)
|
||||
{
|
||||
base.OnDragDrop(e);
|
||||
|
||||
if (draggingNode.Level <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TreeNode en = this.GetNodeAt(this.PointToClient(new Point(e.X, e.Y)));
|
||||
if (en == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsNodeChild(draggingNode, en))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TreeNode dn = draggingNode;
|
||||
if (en.Tag == null)
|
||||
{
|
||||
dn.Parent.Nodes.Remove(dn);
|
||||
en.Nodes.Insert(0, dn);
|
||||
}
|
||||
else
|
||||
{
|
||||
en.Parent.Nodes.Remove(dn);
|
||||
en.Parent.Nodes.Insert(en.Index + 1, dn);
|
||||
}
|
||||
|
||||
this.HasChanged = true;
|
||||
}
|
||||
|
||||
protected override void OnDragEnter(DragEventArgs e)
|
||||
{
|
||||
base.OnDragEnter(e);
|
||||
|
||||
e.Effect = DragDropEffects.Move;
|
||||
}
|
||||
|
||||
protected override void OnMouseDown(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDown(e);
|
||||
|
||||
this.SelectedNode = this.GetNodeAt(e.Location);
|
||||
}
|
||||
|
||||
protected override void OnDragOver(DragEventArgs e)
|
||||
{
|
||||
base.OnDragOver(e);
|
||||
|
||||
this.SelectedNode = this.GetNodeAt(this.PointToClient(new Point(e.X, e.Y)));
|
||||
}
|
||||
|
||||
protected override void OnBeforeLabelEdit(NodeLabelEditEventArgs e)
|
||||
{
|
||||
if (!AllowBeginEdit)
|
||||
{
|
||||
AllowBeginEdit = false;
|
||||
|
||||
e.CancelEdit = true;
|
||||
return;
|
||||
}
|
||||
|
||||
this.HasChanged = true;
|
||||
|
||||
base.OnBeforeLabelEdit(e);
|
||||
}
|
||||
|
||||
protected override void OnAfterLabelEdit(NodeLabelEditEventArgs e)
|
||||
{
|
||||
base.OnAfterLabelEdit(e);
|
||||
|
||||
//if (e.Node.Tag == null)
|
||||
//{
|
||||
// if (e.Label == null)
|
||||
// {
|
||||
// e.CancelEdit = true;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (e.Label.Trim().Length <= 0)
|
||||
// {
|
||||
// e.CancelEdit = true;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// e.CancelEdit = true;
|
||||
//}
|
||||
|
||||
AllowBeginEdit = false;
|
||||
}
|
||||
|
||||
protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Right)
|
||||
{
|
||||
switch (this.GetNodeType())
|
||||
{
|
||||
case BookmarkTreeView.NodeType.Root:
|
||||
if (this.RootContextMenu != null) this.RootContextMenu.Show(e.Node.TreeView, e.X, e.Y);
|
||||
break;
|
||||
case BookmarkTreeView.NodeType.Folder:
|
||||
if (this.FolderContextMenu != null) this.FolderContextMenu.Show(e.Node.TreeView, e.X, e.Y);
|
||||
break;
|
||||
case BookmarkTreeView.NodeType.Page:
|
||||
if (this.PageContextMenu != null) this.PageContextMenu.Show(e.Node.TreeView, e.X, e.Y);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
base.OnNodeMouseClick(e);
|
||||
}
|
||||
|
||||
protected override void OnPreviewKeyDown(PreviewKeyDownEventArgs e)
|
||||
{
|
||||
TreeNode tn = this.SelectedNode;
|
||||
if (tn == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
NodeType nodeType = this.GetNodeType();
|
||||
|
||||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.Insert:
|
||||
if (e.Modifiers == Keys.Shift)
|
||||
{
|
||||
if ((nodeType == NodeType.Root) || (nodeType == NodeType.Folder))
|
||||
{
|
||||
this.SelectedNode = this.AddFolder();
|
||||
}
|
||||
else if (nodeType == NodeType.Page)
|
||||
{
|
||||
this.SelectedNode = tn.Parent;
|
||||
this.SelectedNode = this.AddFolder();
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.Delete:
|
||||
if (!tn.IsEditing)
|
||||
{
|
||||
this.DeleteNode();
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.F2:
|
||||
if ((nodeType == NodeType.Root) || (nodeType == NodeType.Folder))
|
||||
{
|
||||
this.AllowBeginEdit = true;
|
||||
|
||||
this.EditNode();
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.F3:
|
||||
switch (nodeType)
|
||||
{
|
||||
case NodeType.Root:
|
||||
case NodeType.Folder:
|
||||
try
|
||||
{
|
||||
Clipboard.SetText(tn.Text ?? string.Empty);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
break;
|
||||
case NodeType.Page:
|
||||
BookmarkItemViewModel viewModel = this.GetNodeModel();
|
||||
if (viewModel != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
Clipboard.SetText(viewModel.SiteAddress ?? string.Empty);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.Up:
|
||||
if (e.Modifiers == Keys.Control)
|
||||
{
|
||||
this.MoveUp();
|
||||
this.HasChanged = true;
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.Down:
|
||||
if (e.Modifiers == Keys.Control)
|
||||
{
|
||||
this.MoveDown();
|
||||
this.HasChanged = true;
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.Apps:
|
||||
this.OnNodeMouseClick(new TreeNodeMouseClickEventArgs(tn, MouseButtons.Right, 1, tn.Bounds.X, tn.Bounds.Y));
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
base.OnPreviewKeyDown(e);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region encapsulation
|
||||
|
||||
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
@@ -285,6 +519,15 @@ namespace RyzStudio.Windows.Forms
|
||||
}
|
||||
}
|
||||
|
||||
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public ContextMenuStrip RootContextMenu { get; set; } = null;
|
||||
|
||||
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public ContextMenuStrip FolderContextMenu { get; set; } = null;
|
||||
|
||||
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public ContextMenuStrip PageContextMenu { get; set; } = null;
|
||||
|
||||
|
||||
public bool InitialiseIconDatabase(out string message, string filename)
|
||||
{
|
||||
@@ -438,22 +681,22 @@ namespace RyzStudio.Windows.Forms
|
||||
//iconDatabase.Close();
|
||||
}
|
||||
|
||||
public int CountBookmarkItem()
|
||||
{
|
||||
int itemCount = 0;
|
||||
//public int CountBookmarkItem()
|
||||
//{
|
||||
// int itemCount = 0;
|
||||
|
||||
if (this.Nodes.Count <= 0)
|
||||
{
|
||||
return itemCount;
|
||||
}
|
||||
// if (this.Nodes.Count <= 0)
|
||||
// {
|
||||
// return itemCount;
|
||||
// }
|
||||
|
||||
foreach (TreeNode item in this.Nodes)
|
||||
{
|
||||
TraverseBookmarkList(ref itemCount, item);
|
||||
}
|
||||
// foreach (TreeNode item in this.Nodes)
|
||||
// {
|
||||
// TraverseBookmarkList(ref itemCount, item);
|
||||
// }
|
||||
|
||||
return itemCount;
|
||||
}
|
||||
// return itemCount;
|
||||
//}
|
||||
|
||||
public void DeleteNode() => DeleteNode(this.SelectedNode);
|
||||
|
||||
@@ -609,234 +852,27 @@ namespace RyzStudio.Windows.Forms
|
||||
this.HasChanged = false;
|
||||
}
|
||||
|
||||
public void Sort() => Sort(this.SelectedNode);
|
||||
public new void Sort() => Sort(this.SelectedNode);
|
||||
|
||||
public void UpdateItem(TreeNode treeNode, BookmarkItemViewModel viewModel)
|
||||
{
|
||||
if (treeNode == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//public void UpdateItem(TreeNode treeNode, BookmarkItemViewModel viewModel)
|
||||
//{
|
||||
// if (treeNode == null)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
|
||||
int iconIndex = addIcon(viewModel);
|
||||
// int iconIndex = addIcon(viewModel);
|
||||
|
||||
treeNode.Text = viewModel.SiteName;
|
||||
treeNode.ImageIndex = iconIndex;
|
||||
treeNode.SelectedImageIndex = iconIndex;
|
||||
treeNode.Tag = viewModel;
|
||||
treeNode.ToolTipText = viewModel.ToString();
|
||||
// treeNode.Text = viewModel.SiteName;
|
||||
// treeNode.ImageIndex = iconIndex;
|
||||
// treeNode.SelectedImageIndex = iconIndex;
|
||||
// treeNode.Tag = viewModel;
|
||||
// treeNode.ToolTipText = viewModel.ToString();
|
||||
|
||||
this.HasChanged = true;
|
||||
}
|
||||
// this.HasChanged = true;
|
||||
//}
|
||||
|
||||
|
||||
#region integrated behaviour
|
||||
|
||||
protected override void OnItemDrag(ItemDragEventArgs e)
|
||||
{
|
||||
base.OnItemDrag(e);
|
||||
|
||||
draggingNode = (TreeNode)e.Item;
|
||||
DoDragDrop(e.Item, DragDropEffects.Move);
|
||||
}
|
||||
|
||||
protected override void OnDragDrop(DragEventArgs e)
|
||||
{
|
||||
base.OnDragDrop(e);
|
||||
|
||||
if (draggingNode.Level <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TreeNode en = this.GetNodeAt(this.PointToClient(new Point(e.X, e.Y)));
|
||||
if (en == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsNodeChild(draggingNode, en))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TreeNode dn = draggingNode;
|
||||
if (en.Tag == null)
|
||||
{
|
||||
dn.Parent.Nodes.Remove(dn);
|
||||
en.Nodes.Insert(0, dn);
|
||||
}
|
||||
else
|
||||
{
|
||||
en.Parent.Nodes.Remove(dn);
|
||||
en.Parent.Nodes.Insert(en.Index + 1, dn);
|
||||
}
|
||||
|
||||
this.HasChanged = true;
|
||||
}
|
||||
|
||||
protected override void OnDragEnter(DragEventArgs e)
|
||||
{
|
||||
base.OnDragEnter(e);
|
||||
|
||||
e.Effect = DragDropEffects.Move;
|
||||
}
|
||||
|
||||
protected override void OnMouseDown(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDown(e);
|
||||
|
||||
this.SelectedNode = this.GetNodeAt(e.Location);
|
||||
}
|
||||
|
||||
protected override void OnDragOver(DragEventArgs e)
|
||||
{
|
||||
base.OnDragOver(e);
|
||||
|
||||
this.SelectedNode = this.GetNodeAt(this.PointToClient(new Point(e.X, e.Y)));
|
||||
}
|
||||
|
||||
protected override void OnBeforeLabelEdit(NodeLabelEditEventArgs e)
|
||||
{
|
||||
if (!AllowBeginEdit)
|
||||
{
|
||||
AllowBeginEdit = false;
|
||||
|
||||
e.CancelEdit = true;
|
||||
return;
|
||||
}
|
||||
|
||||
this.HasChanged = true;
|
||||
|
||||
base.OnBeforeLabelEdit(e);
|
||||
}
|
||||
|
||||
protected override void OnAfterLabelEdit(NodeLabelEditEventArgs e)
|
||||
{
|
||||
base.OnAfterLabelEdit(e);
|
||||
|
||||
//if (e.Node.Tag == null)
|
||||
//{
|
||||
// if (e.Label == null)
|
||||
// {
|
||||
// e.CancelEdit = true;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (e.Label.Trim().Length <= 0)
|
||||
// {
|
||||
// e.CancelEdit = true;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// e.CancelEdit = true;
|
||||
//}
|
||||
|
||||
AllowBeginEdit = false;
|
||||
}
|
||||
|
||||
protected override void OnPreviewKeyDown(PreviewKeyDownEventArgs e)
|
||||
{
|
||||
TreeNode tn = this.SelectedNode;
|
||||
if (tn == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
NodeType nodeType = this.GetNodeType();
|
||||
|
||||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.Insert:
|
||||
if (e.Modifiers == Keys.Shift)
|
||||
{
|
||||
if ((nodeType == NodeType.Root) || (nodeType == NodeType.Folder))
|
||||
{
|
||||
this.SelectedNode = this.AddFolder();
|
||||
}
|
||||
else if (nodeType == NodeType.Page)
|
||||
{
|
||||
this.SelectedNode = tn.Parent;
|
||||
this.SelectedNode = this.AddFolder();
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.Delete:
|
||||
if (!tn.IsEditing)
|
||||
{
|
||||
this.DeleteNode();
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.F2:
|
||||
if ((nodeType == NodeType.Root) || (nodeType == NodeType.Folder))
|
||||
{
|
||||
this.AllowBeginEdit = true;
|
||||
|
||||
this.EditNode();
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.F3:
|
||||
switch (nodeType)
|
||||
{
|
||||
case NodeType.Root:
|
||||
case NodeType.Folder:
|
||||
try
|
||||
{
|
||||
Clipboard.SetText(tn.Text ?? string.Empty);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
break;
|
||||
case NodeType.Page:
|
||||
BookmarkItemViewModel viewModel = this.GetNodeModel();
|
||||
if (viewModel != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
Clipboard.SetText(viewModel.SiteAddress ?? string.Empty);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.Up:
|
||||
if (e.Modifiers == Keys.Control)
|
||||
{
|
||||
this.MoveUp();
|
||||
this.HasChanged = true;
|
||||
}
|
||||
|
||||
break;
|
||||
case Keys.Down:
|
||||
if (e.Modifiers == Keys.Control)
|
||||
{
|
||||
this.MoveDown();
|
||||
this.HasChanged = true;
|
||||
}
|
||||
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
base.OnPreviewKeyDown(e);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
protected int addIcon(BookmarkItemViewModel viewModel)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user