diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index b9bc44b..1bee627 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -84,11 +84,11 @@
this.RightToolStripPanel = new System.Windows.Forms.ToolStripPanel();
this.LeftToolStripPanel = new System.Windows.Forms.ToolStripPanel();
this.ContentPanel = new System.Windows.Forms.ToolStripContentPanel();
- this.statusStrip1 = new System.Windows.Forms.StatusStrip();
- this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
+ this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.testToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.toolStrip1.SuspendLayout();
- this.statusStrip1.SuspendLayout();
+ this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
// menuStrip1
@@ -118,26 +118,26 @@
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "&File";
//
- // openToolStripMenuItem
+ // _menuItemOpen
//
- this._menuItemOpen.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripMenuItem.Image")));
- this._menuItemOpen.Name = "openToolStripMenuItem";
+ this._menuItemOpen.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemOpen.Image")));
+ this._menuItemOpen.Name = "_menuItemOpen";
this._menuItemOpen.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
this._menuItemOpen.Size = new System.Drawing.Size(223, 22);
this._menuItemOpen.Text = "&Open...";
//
- // openFolderToolStripMenuItem
+ // _menuItemOpenFolder
//
- this._menuItemOpenFolder.Image = ((System.Drawing.Image)(resources.GetObject("openFolderToolStripMenuItem.Image")));
- this._menuItemOpenFolder.Name = "openFolderToolStripMenuItem";
+ this._menuItemOpenFolder.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemOpenFolder.Image")));
+ this._menuItemOpenFolder.Name = "_menuItemOpenFolder";
this._menuItemOpenFolder.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.O)));
this._menuItemOpenFolder.Size = new System.Drawing.Size(223, 22);
this._menuItemOpenFolder.Text = "Open &Folder...";
//
- // openMinecraftSaveFolderToolStripMenuItem
+ // _menuItemOpenMinecraftSaveFolder
//
- this._menuItemOpenMinecraftSaveFolder.Name = "openMinecraftSaveFolderToolStripMenuItem";
+ this._menuItemOpenMinecraftSaveFolder.Name = "_menuItemOpenMinecraftSaveFolder";
this._menuItemOpenMinecraftSaveFolder.Size = new System.Drawing.Size(223, 22);
this._menuItemOpenMinecraftSaveFolder.Text = "Open &Minecraft Save Folder";
//
@@ -146,10 +146,10 @@
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(220, 6);
//
- // saveToolStripMenuItem
+ // _menuItemSave
//
- this._menuItemSave.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem.Image")));
- this._menuItemSave.Name = "saveToolStripMenuItem";
+ this._menuItemSave.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemSave.Image")));
+ this._menuItemSave.Name = "_menuItemSave";
this._menuItemSave.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this._menuItemSave.Size = new System.Drawing.Size(223, 22);
this._menuItemSave.Text = "&Save";
@@ -159,10 +159,10 @@
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(220, 6);
//
- // exitToolStripMenuItem
+ // _menuItemExit
//
- this._menuItemExit.Image = ((System.Drawing.Image)(resources.GetObject("exitToolStripMenuItem.Image")));
- this._menuItemExit.Name = "exitToolStripMenuItem";
+ this._menuItemExit.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemExit.Image")));
+ this._menuItemExit.Name = "_menuItemExit";
this._menuItemExit.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4)));
this._menuItemExit.Size = new System.Drawing.Size(223, 22);
this._menuItemExit.Text = "E&xit";
@@ -181,26 +181,26 @@
this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20);
this.editToolStripMenuItem.Text = "&Edit";
//
- // cutToolStripMenuItem
+ // _menuItemCut
//
- this._menuItemCut.Image = ((System.Drawing.Image)(resources.GetObject("cutToolStripMenuItem.Image")));
- this._menuItemCut.Name = "cutToolStripMenuItem";
+ this._menuItemCut.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemCut.Image")));
+ this._menuItemCut.Name = "_menuItemCut";
this._menuItemCut.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
this._menuItemCut.Size = new System.Drawing.Size(166, 22);
this._menuItemCut.Text = "Cu&t";
//
- // copyToolStripMenuItem
+ // _menuItemCopy
//
- this._menuItemCopy.Image = ((System.Drawing.Image)(resources.GetObject("copyToolStripMenuItem.Image")));
- this._menuItemCopy.Name = "copyToolStripMenuItem";
+ this._menuItemCopy.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemCopy.Image")));
+ this._menuItemCopy.Name = "_menuItemCopy";
this._menuItemCopy.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
this._menuItemCopy.Size = new System.Drawing.Size(166, 22);
this._menuItemCopy.Text = "&Copy";
//
- // pasteToolStripMenuItem
+ // _menuItemPaste
//
- this._menuItemPaste.Image = ((System.Drawing.Image)(resources.GetObject("pasteToolStripMenuItem.Image")));
- this._menuItemPaste.Name = "pasteToolStripMenuItem";
+ this._menuItemPaste.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemPaste.Image")));
+ this._menuItemPaste.Name = "_menuItemPaste";
this._menuItemPaste.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
this._menuItemPaste.Size = new System.Drawing.Size(166, 22);
this._menuItemPaste.Text = "&Paste";
@@ -210,26 +210,26 @@
this.toolStripSeparator7.Name = "toolStripSeparator7";
this.toolStripSeparator7.Size = new System.Drawing.Size(163, 6);
//
- // renameToolStripMenuItem
+ // _menuItemRename
//
- this._menuItemRename.Image = ((System.Drawing.Image)(resources.GetObject("renameToolStripMenuItem.Image")));
- this._menuItemRename.Name = "renameToolStripMenuItem";
+ this._menuItemRename.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemRename.Image")));
+ this._menuItemRename.Name = "_menuItemRename";
this._menuItemRename.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R)));
this._menuItemRename.Size = new System.Drawing.Size(166, 22);
this._menuItemRename.Text = "&Rename";
//
- // editValueToolStripMenuItem
+ // _menuItemEditValue
//
- this._menuItemEditValue.Image = ((System.Drawing.Image)(resources.GetObject("editValueToolStripMenuItem.Image")));
- this._menuItemEditValue.Name = "editValueToolStripMenuItem";
+ this._menuItemEditValue.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemEditValue.Image")));
+ this._menuItemEditValue.Name = "_menuItemEditValue";
this._menuItemEditValue.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E)));
this._menuItemEditValue.Size = new System.Drawing.Size(166, 22);
this._menuItemEditValue.Text = "&Edit Value";
//
- // deleteToolStripMenuItem
+ // _menuItemDelete
//
- this._menuItemDelete.Image = ((System.Drawing.Image)(resources.GetObject("deleteToolStripMenuItem.Image")));
- this._menuItemDelete.Name = "deleteToolStripMenuItem";
+ this._menuItemDelete.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemDelete.Image")));
+ this._menuItemDelete.Name = "_menuItemDelete";
this._menuItemDelete.ShortcutKeys = System.Windows.Forms.Keys.Delete;
this._menuItemDelete.Size = new System.Drawing.Size(166, 22);
this._menuItemDelete.Text = "&Delete";
@@ -243,18 +243,18 @@
this.searchToolStripMenuItem.Size = new System.Drawing.Size(54, 20);
this.searchToolStripMenuItem.Text = "&Search";
//
- // findToolStripMenuItem
+ // _menuItemFind
//
- this._menuItemFind.Image = ((System.Drawing.Image)(resources.GetObject("findToolStripMenuItem.Image")));
- this._menuItemFind.Name = "findToolStripMenuItem";
+ this._menuItemFind.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemFind.Image")));
+ this._menuItemFind.Name = "_menuItemFind";
this._menuItemFind.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F)));
this._menuItemFind.Size = new System.Drawing.Size(146, 22);
this._menuItemFind.Text = "Find...";
//
- // findNextToolStripMenuItem
+ // _menuItemFindNext
//
- this._menuItemFindNext.Image = ((System.Drawing.Image)(resources.GetObject("findNextToolStripMenuItem.Image")));
- this._menuItemFindNext.Name = "findNextToolStripMenuItem";
+ this._menuItemFindNext.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemFindNext.Image")));
+ this._menuItemFindNext.Name = "_menuItemFindNext";
this._menuItemFindNext.ShortcutKeys = System.Windows.Forms.Keys.F3;
this._menuItemFindNext.Size = new System.Drawing.Size(146, 22);
this._menuItemFindNext.Text = "Find Next";
@@ -267,10 +267,10 @@
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem.Text = "&Help";
//
- // aboutToolStripMenuItem
+ // _menuItemAbout
//
- this._menuItemAbout.Image = ((System.Drawing.Image)(resources.GetObject("aboutToolStripMenuItem.Image")));
- this._menuItemAbout.Name = "aboutToolStripMenuItem";
+ this._menuItemAbout.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemAbout.Image")));
+ this._menuItemAbout.Name = "_menuItemAbout";
this._menuItemAbout.ShortcutKeys = System.Windows.Forms.Keys.F1;
this._menuItemAbout.Size = new System.Drawing.Size(126, 22);
this._menuItemAbout.Text = "&About";
@@ -288,7 +288,7 @@
this._nodeTree.Margin = new System.Windows.Forms.Padding(0);
this._nodeTree.Name = "_nodeTree";
this._nodeTree.SelectedImageIndex = 0;
- this._nodeTree.Size = new System.Drawing.Size(619, 350);
+ this._nodeTree.Size = new System.Drawing.Size(619, 374);
this._nodeTree.TabIndex = 0;
//
// imageList1
@@ -592,22 +592,18 @@
//
this.ContentPanel.Size = new System.Drawing.Size(562, 376);
//
- // statusStrip1
+ // contextMenuStrip1
//
- this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.toolStripStatusLabel1});
- this.statusStrip1.Location = new System.Drawing.Point(0, 401);
- this.statusStrip1.Margin = new System.Windows.Forms.Padding(0, 2, 0, 0);
- this.statusStrip1.Name = "statusStrip1";
- this.statusStrip1.Size = new System.Drawing.Size(619, 22);
- this.statusStrip1.TabIndex = 1;
- this.statusStrip1.Text = "statusStrip1";
+ this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.testToolStripMenuItem});
+ this.contextMenuStrip1.Name = "contextMenuStrip1";
+ this.contextMenuStrip1.Size = new System.Drawing.Size(97, 26);
//
- // toolStripStatusLabel1
+ // testToolStripMenuItem
//
- this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
- this.toolStripStatusLabel1.Size = new System.Drawing.Size(604, 17);
- this.toolStripStatusLabel1.Spring = true;
+ this.testToolStripMenuItem.Name = "testToolStripMenuItem";
+ this.testToolStripMenuItem.Size = new System.Drawing.Size(96, 22);
+ this.testToolStripMenuItem.Text = "Test";
//
// MainForm
//
@@ -615,7 +611,6 @@
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(619, 423);
- this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.toolStrip1);
this.Controls.Add(this._nodeTree);
this.Controls.Add(this.menuStrip1);
@@ -627,8 +622,7 @@
this.menuStrip1.PerformLayout();
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
- this.statusStrip1.ResumeLayout(false);
- this.statusStrip1.PerformLayout();
+ this.contextMenuStrip1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
@@ -678,8 +672,6 @@
private System.Windows.Forms.ToolStripPanel RightToolStripPanel;
private System.Windows.Forms.ToolStripPanel LeftToolStripPanel;
private System.Windows.Forms.ToolStripContentPanel ContentPanel;
- private System.Windows.Forms.StatusStrip statusStrip1;
- private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
private System.Windows.Forms.ToolStripButton _buttonAddTagIntArray;
private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem _menuItemCut;
@@ -693,6 +685,8 @@
private System.Windows.Forms.ToolStripButton _buttonCopy;
private System.Windows.Forms.ToolStripButton _buttonPaste;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
+ private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
+ private System.Windows.Forms.ToolStripMenuItem testToolStripMenuItem;
}
}
diff --git a/MainForm.cs b/MainForm.cs
index d5df581..41ba40f 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -45,6 +45,7 @@ namespace NBTExplorer
_nodeTree.AfterCollapse += _nodeTree_AfterCollapse;
_nodeTree.AfterSelect += _nodeTree_AfterSelect;
_nodeTree.NodeMouseDoubleClick += _nodeTree_NodeMouseDoubleClick;
+ _nodeTree.NodeMouseClick += _nodeTree_NodeMouseClick;
_nodeTree.DragEnter += _nodeTree_DragEnter;
_nodeTree.DragDrop += _nodeTree_DragDrop;
@@ -192,6 +193,7 @@ namespace NBTExplorer
frontNode.ImageIndex = _iconRegistry.Lookup(node.GetType());
frontNode.SelectedImageIndex = frontNode.ImageIndex;
frontNode.Tag = node;
+ frontNode.ContextMenuStrip = BuildNodeContextMenu(node);
if (node.HasUnexpandedChildren)
frontNode.Nodes.Add(new TreeNode());
@@ -199,6 +201,46 @@ namespace NBTExplorer
return frontNode;
}
+ private ContextMenuStrip BuildNodeContextMenu (DataNode node)
+ {
+ if (node == null)
+ return null;
+
+ ContextMenuStrip menu = new ContextMenuStrip();
+
+ if (node.CanReoderNode) {
+ ToolStripMenuItem itemUp = new ToolStripMenuItem("Move &Up", Properties.Resources.ArrowUp, _contextMoveUp_Click);
+ ToolStripMenuItem itemDn = new ToolStripMenuItem("Move &Down", Properties.Resources.ArrowDown, _contextMoveDown_Click);
+
+ itemUp.Enabled = node.CanMoveNodeUp;
+ itemDn.Enabled = node.CanMoveNodeDown;
+
+ menu.Items.Add(itemUp);
+ menu.Items.Add(itemDn);
+ }
+
+ return (menu.Items.Count > 0) ? menu : null;
+ }
+
+ private void _contextMoveUp_Click (object sender, EventArgs e)
+ {
+ TreeNode frontNode = _nodeTree.SelectedNode;
+ if (frontNode == null)
+ return;
+
+ DataNode node = frontNode.Tag as DataNode;
+ if (node == null || !node.CanMoveNodeUp)
+ return;
+
+ node.ChangeRelativePosition(-1);
+ RefreshChildNodes(frontNode.Parent, node.Parent);
+ }
+
+ private void _contextMoveDown_Click (object sender, EventArgs e)
+ {
+
+ }
+
private void ExpandNode (TreeNode node)
{
if (node == null || !(node.Tag is DataNode))
@@ -257,7 +299,18 @@ namespace NBTExplorer
currentNodes.Add(child.Tag as DataNode, child);
}
+ node.Nodes.Clear();
foreach (DataNode child in dataNode.Nodes) {
+ if (!currentNodes.ContainsKey(child))
+ node.Nodes.Add(CreateUnexpandedNode(child));
+ else
+ node.Nodes.Add(currentNodes[child]);
+ }
+
+ foreach (TreeNode child in node.Nodes)
+ child.ContextMenuStrip = BuildNodeContextMenu(child.Tag as DataNode);
+
+ /*foreach (DataNode child in dataNode.Nodes) {
if (!currentNodes.ContainsKey(child))
node.Nodes.Add(CreateUnexpandedNode(child));
else
@@ -266,7 +319,7 @@ namespace NBTExplorer
foreach (TreeNode child in currentNodes.Values) {
node.Nodes.Remove(child);
- }
+ }*/
if (node.Nodes.Count == 0 && dataNode.HasUnexpandedChildren) {
ExpandNode(node);
@@ -629,6 +682,12 @@ namespace NBTExplorer
EditNode(e.Node);
}
+ private void _nodeTree_NodeMouseClick (object sender, TreeNodeMouseClickEventArgs e)
+ {
+ if (e.Button == MouseButtons.Right)
+ _nodeTree.SelectedNode = e.Node;
+ }
+
private void _nodeTree_DragDrop (object sender, DragEventArgs e)
{
OpenPaths((string[])e.Data.GetData(DataFormats.FileDrop));
diff --git a/MainForm.resx b/MainForm.resx
index 5097d62..8f89107 100644
--- a/MainForm.resx
+++ b/MainForm.resx
@@ -112,16 +112,16 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
17, 17
-
-
+
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACkklEQVQ4T43SX0hTURzA8d9b
@@ -139,7 +139,7 @@
gg==
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAI/SURBVDhPjdJPSJNxGAfw5xYd6+hZJIhCkm5d8hBeIq/9
@@ -155,7 +155,7 @@
8h/ayQIkRwIF8QAAAABJRU5ErkJggg==
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABwklEQVQ4T6XOT0iTcRzH8e+e
@@ -169,7 +169,7 @@
L1tJUV/SlAd3xCblH+s4aw2T/BzJAAAAAElFTkSuQmCC
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAB/UlEQVQ4T41SS0tVURjdEwc5
@@ -184,7 +184,7 @@
OFkM9KlfL99lseAvRjbC0XMbRtAAAAAASUVORK5CYII=
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACCUlEQVQ4T6VSPWgTYRh+v/0Q
@@ -199,7 +199,7 @@
D3GK4zgfBQ4DB4ED+ziEeQQ4lvL6LPgNwitoieNYTCsAAAAASUVORK5CYII=
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAB70lEQVQ4T42SPUubYRSGz+Kg
@@ -214,7 +214,7 @@
gsnRJ2HiAAAAAElFTkSuQmCC
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACc0lEQVQ4T43SW0hUURQG4PWS
@@ -231,7 +231,7 @@
CBL/g/dyjRT1G7y5F+bDPK+HAAAAAElFTkSuQmCC
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAt0lEQVQ4T6VSSwoCMQxNTzBL
@@ -241,7 +241,7 @@
TkSuQmCC
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADaWlUWHRYTUw6Y29tLmFkb2Jl
@@ -271,7 +271,7 @@
Q2Xb0J1nxd38XsIUM5uZjcwGZj2zjlnDrF4IyWsQfwCLISjKZ5nx7AAAAABJRU5ErkJggg==
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABfUlEQVQ4T6WTu0vDUBTGz1+g
@@ -284,7 +284,7 @@
yd/5G8s+qAWdGU8YAAAAAElFTkSuQmCC
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACDElEQVQ4T42SzWoaURTHRxER
@@ -299,7 +299,7 @@
NX+l/xHGiv/JWz3cK/mJEPGGePufcC33+P8AbaoESlToQpYAAAAASUVORK5CYII=
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACZElEQVQ4T4WSXWhSYRjHj8Ns
@@ -316,7 +316,7 @@
WupUAAAAAElFTkSuQmCC
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAC5klEQVQ4T12OX0iTURjGD4kM
@@ -335,7 +335,7 @@
QtiJ+A2+oxJO8d3MEAAAAABJRU5ErkJggg==
-
+
237, 17
@@ -343,7 +343,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADQ
- MwAAAk1TRnQBSQFMAgEBEAEAAQgBAQEIAQEBEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
+ MwAAAk1TRnQBSQFMAgEBEAEAARABAQEQAQEBEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABUAMAAQEBAAEYBgABPP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AB4AA/wD+SH4A/kD/AMAA/0D+SH4
A/kD/TkAA/8D/AP5EvgD+QP7A/4GAAGWAakBvAFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFc
AYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgGWAakBvAMAAs8BywK5
@@ -567,7 +567,7 @@
AcABDwHAAQ8L
-
+
132, 17
@@ -620,14 +620,14 @@
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHBSURBVDhPrVI9SAJhGH5vlygi+jFIBJEb4pwECQTBRaRB
- aQmbrFmkwOQmMQLnGowiaIsapJaIhHAQghAu4pakRSgkbomgqCC/3ufDCxWThoSH93ufv/tOJfqPTzwe
- n4/FYtpfuuCDv8ubTCZ1IBqNDiyBbnu7Cjwej24YhkgkEnooFOpbAh46fPD33lYDaZqm4CvqPp+vqwQ7
- eOjtcN+HaF6vV6/X6yISiehslCZM7OChMzXwNWVJo9EQwWBQdzqdC5jY/xKWrzXHT1BVVW82myIcDl9U
- KhWBHfyvv9ITkeORaPFBUbYYxyVFKW+4XKZlWaLqcJg3vIOHDh/8P2UmL/eKsmkFArW3VOr5PZdriUJB
- 3KbT4pLoFWcAPHT44EdOlhhESw2/34DpxO2+2yaqfeXz4oznOVEREzt46PDBj5wsqCrKfmf4I5MRp2xm
- SAMmdvCdJcjJghJR+SWTaUH8zGbFIc8ju739otjBQ4cPfuSkvEO0e61pTdzigMX1nrD9ZYGHDh/8yEnN
- SxQqEu0xcbVMtMbULP4/jBmGkzHNcDPUFaJV+OBHzi6f4oONST6PM0YZw4yhNkZ4jjEmOrzI0DcBiOxD
- XRtgPgAAAABJRU5ErkJggg==
+ aQmbrFmkwOQWwQicazCKoC1qkFoiEsJBCEK4iFuSFqGQuKWGioL8ep8PL1RMGhIe3u99/u47leg/PvF4
+ fD4Wi2l/6YIP/i5vMpnUgWg0OrAEuu3tKvB4PLphGCKRSOihUKhvCXjo8MHfe1sNpGmagq+o+3y+rhLs
+ 4KG3w30fonm9Xr1er4tIJKKzUZowsYOHztTA15QljUZDBINB3el0LmBi/0tYvtYcP0FVVb3ZbIpwOHxR
+ qVQEdvC//kpPRI5HosUHRdliHJcUpbzhcpmWZYmqw2He8A4eOnzw/5SZvNwryqYVCNTeUqnn91yuJQoF
+ cZtOi0uiV5wB8NDhgx85WWIQLTX8fgOmE7f7bpuo9pXPizOe50RFTOzgocMHP3KyoKoo+53hj0xGnLKZ
+ IQ2Y2MF3liAnC0pE5ZdMpgXxM5sVhzyP7Pb2i2IHDx0++JGT8g7R7rWmNXGLAxbXe8L2lwUeOnzwIyc1
+ L1GoSLTHxNUy0RpTs/j/MGYYTsY0w81QV4hW4YMfObt8ig82Jvk8zhhlDDOG2hjhOcaY6PAiQ9/1tew7
+ AaBXEgAAAABJRU5ErkJggg==
@@ -820,31 +820,31 @@
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
- akBqQXrgBuyIZ8m9vyz7wbPNDf9heEuj338YXlftARcHyYPUgvTADdgawzz17v7lf//fXfUfhu+uKgcy
+ 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
- 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
+ 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
- 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
+ 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
-
- 527, 17
+
+ 347, 17
diff --git a/Model/DataNode.cs b/Model/DataNode.cs
index 3aac21a..bfe356e 100644
--- a/Model/DataNode.cs
+++ b/Model/DataNode.cs
@@ -146,6 +146,21 @@ namespace NBTExplorer.Model
get { return (Capabilities & NodeCapabilities.Search) != NodeCapabilities.None; }
}
+ public virtual bool CanReoderNode
+ {
+ get { return (Capabilities & NodeCapabilities.Reorder) != NodeCapabilities.None; }
+ }
+
+ public virtual bool CanMoveNodeUp
+ {
+ get { return false; }
+ }
+
+ public virtual bool CanMoveNodeDown
+ {
+ get { return false; }
+ }
+
public virtual bool CanCreateTag (TagType type)
{
return false;
@@ -190,6 +205,11 @@ namespace NBTExplorer.Model
return false;
}
+ public virtual bool ChangeRelativePosition (int offset)
+ {
+ return false;
+ }
+
#endregion
}
}
diff --git a/Model/NodeCapabilities.cs b/Model/NodeCapabilities.cs
index e5f08a3..9588730 100644
--- a/Model/NodeCapabilities.cs
+++ b/Model/NodeCapabilities.cs
@@ -14,5 +14,6 @@ namespace NBTExplorer.Model
Delete = 0x20,
CreateTag = 0x40,
Search = 0x80,
+ Reorder = 0x100,
}
}
diff --git a/Model/TagDataNode.cs b/Model/TagDataNode.cs
index b85a0c2..b084621 100644
--- a/Model/TagDataNode.cs
+++ b/Model/TagDataNode.cs
@@ -57,6 +57,7 @@ namespace NBTExplorer.Model
| NodeCapabilities.Delete
| NodeCapabilities.PasteInto
| (TagParent.IsNamedContainer ? NodeCapabilities.Rename : NodeCapabilities.None)
+ | (TagParent.IsOrderedContainer ? NodeCapabilities.Reorder : NodeCapabilities.None)
| NodeCapabilities.Search;
}
}
@@ -158,7 +159,28 @@ namespace NBTExplorer.Model
| NodeCapabilities.Cut
| NodeCapabilities.Delete
| NodeCapabilities.Edit
- | (TagParent.IsNamedContainer ? NodeCapabilities.Rename : NodeCapabilities.None);
+ | (TagParent.IsNamedContainer ? NodeCapabilities.Rename : NodeCapabilities.None)
+ | (TagParent.IsOrderedContainer ? NodeCapabilities.Reorder : NodeCapabilities.None);
+ }
+ }
+
+ public override bool CanMoveNodeUp
+ {
+ get
+ {
+ if (TagParent.IsOrderedContainer)
+ return TagParent.OrderedTagContainer.GetTagIndex(Tag) > 0;
+ return false;
+ }
+ }
+
+ public override bool CanMoveNodeDown
+ {
+ get
+ {
+ if (TagParent.IsOrderedContainer)
+ return TagParent.OrderedTagContainer.GetTagIndex(Tag) < (TagParent.TagCount - 1);
+ return false;
}
}
@@ -238,6 +260,27 @@ namespace NBTExplorer.Model
return false;
}
+ public override bool ChangeRelativePosition (int offset)
+ {
+ if (CanReoderNode) {
+ int curIndex = TagParent.OrderedTagContainer.GetTagIndex(Tag);
+ int newIndex = curIndex + offset;
+
+ if (newIndex < 0 || newIndex >= TagParent.OrderedTagContainer.TagCount)
+ return false;
+
+ TagParent.OrderedTagContainer.DeleteTag(Tag);
+ TagParent.OrderedTagContainer.InsertTag(Tag, newIndex);
+
+ DataNode parent = Parent;
+ parent.Nodes.Remove(this);
+ parent.Nodes.Insert(newIndex, this);
+ return true;
+ }
+
+ return false;
+ }
+
protected bool EditScalarValue (TagNode tag)
{
EditValue form = new EditValue(tag);
diff --git a/NBTExplorer.csproj b/NBTExplorer.csproj
index 49c84e3..4a54f3e 100644
--- a/NBTExplorer.csproj
+++ b/NBTExplorer.csproj
@@ -119,13 +119,23 @@
+
+
+
+
+
+
+
+
+
+
Component
@@ -196,6 +206,8 @@
+
+
diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs
index bdc9983..0d3bc07 100644
--- a/Properties/Resources.Designer.cs
+++ b/Properties/Resources.Designer.cs
@@ -59,5 +59,19 @@ namespace NBTExplorer.Properties {
resourceCulture = value;
}
}
+
+ internal static System.Drawing.Bitmap ArrowDown {
+ get {
+ object obj = ResourceManager.GetObject("ArrowDown", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap ArrowUp {
+ get {
+ object obj = ResourceManager.GetObject("ArrowUp", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
}
}
diff --git a/Properties/Resources.resx b/Properties/Resources.resx
index 7080a7d..39a9e38 100644
--- a/Properties/Resources.resx
+++ b/Properties/Resources.resx
@@ -112,9 +112,16 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ..\Resources\arrow-270.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\arrow-090.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/Resources/arrow-090.png b/Resources/arrow-090.png
new file mode 100644
index 0000000..4e4f5b8
Binary files /dev/null and b/Resources/arrow-090.png differ
diff --git a/Resources/arrow-270.png b/Resources/arrow-270.png
new file mode 100644
index 0000000..8d5209b
Binary files /dev/null and b/Resources/arrow-270.png differ