/// <summary> /// Handles KeyDown events when the TreeView has focus. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TreeView1_KeyDown(object sender, KeyEventArgs e) { //Debug.Print("treeView1_KeyDown fired. [" + e.KeyData.ToString() + "] [" + e.Modifiers.ToString() + "]"); // Handle Control+Enter as an expansion/load ALL request. if (e.KeyData.HasFlag(Keys.Enter) && e.KeyData.HasFlag(Keys.Control)) { HandleExpansionRequest(loadAllLevels: true); return; } // Handle Shift+Enter as an expansion/load request. if (e.KeyData.HasFlag(Keys.Enter) && e.KeyData.HasFlag(Keys.Shift)) { HandleExpansionRequest(); return; } // Handle the Enter key similarly to a click. if (e.KeyData == Keys.Enter) { Debug.Print("Selection Request"); HellionExplorerProgram.RefreshSelectedOjectPathBarText(treeView1.SelectedNode); HellionExplorerProgram.RefreshListView(treeView1.SelectedNode); HellionExplorerProgram.RefreshSelectedObjectSummaryText(treeView1.SelectedNode); HellionExplorerProgram.RefreshStatusStrip(treeView1.SelectedNode); return; } }
private void ThisObjectInGameDataViewToolStripMenuItem_Click(object sender, EventArgs e) { if (treeView1.SelectedNode == null) { throw new NullReferenceException("SelectedNode was null."); } else { Type t = treeView1.SelectedNode.GetType(); if (t.Equals(typeof(SolarSystem_TN))) { SolarSystem_TN node = (SolarSystem_TN)treeView1.SelectedNode; treeView1.SelectedNode = node.LinkedGameDataNode; // Trigger refresh HellionExplorerProgram.RefreshSelectedOjectPathBarText(treeView1.SelectedNode); HellionExplorerProgram.RefreshListView(treeView1.SelectedNode); HellionExplorerProgram.RefreshSelectedObjectSummaryText(treeView1.SelectedNode); HellionExplorerProgram.RefreshStatusStrip(treeView1.SelectedNode); } else { throw new InvalidOperationException("Unexpected node type " + t.ToString()); } } }
private void RootOfDockingTreeToolStripMenuItem_Click(object sender, EventArgs e) { // This is only applicable in the Solar System View SolarSystem_TN node = (SolarSystem_TN)treeView1.SelectedNode; treeView1.SelectedNode = node.DockingTreeRoot; // Trigger refresh HellionExplorerProgram.RefreshSelectedOjectPathBarText(treeView1.SelectedNode); HellionExplorerProgram.RefreshListView(treeView1.SelectedNode); HellionExplorerProgram.RefreshSelectedObjectSummaryText(treeView1.SelectedNode); HellionExplorerProgram.RefreshStatusStrip(treeView1.SelectedNode); }
private void TreeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { // Update the object path + name + Tag in the object identifier bar HellionExplorerProgram.RefreshSelectedOjectPathBarText(e.Node); HellionExplorerProgram.RefreshListView(e.Node); HellionExplorerProgram.RefreshSelectedObjectSummaryText(e.Node); HellionExplorerProgram.RefreshStatusStrip(e.Node); // Show menu only if the right mouse button is clicked. if (e.Button == MouseButtons.Right) { Base_TN node = (Base_TN)e.Node; // Get the node that the user has clicked. if (node == null) { return; } // Select in the TreeView the node the user has clicked. treeView1.SelectedNode = node; // Determine node type and activate appropriate jump to menu items. Type t = node.GetType(); // Handles Json_TN nodes for the Game Data representation. if (t.Equals(typeof(Json_TN))) { // We're working with a GAME DATA node // Enable the Json Data View //jsonDataViewToolStripMenuItem.Enabled = true; // Editing of Json is now handled by the Edit menu item on the // context menu. At this point only Objects seem // suitable for use in the Json editor - otherwise de-serialisation // fails and changes can't be applied to the main document. switch (node.NodeType) { case Base_TN_NodeType.SaveFile: case Base_TN_NodeType.DataFile: case Base_TN_NodeType.StationBlueprintFile: case Base_TN_NodeType.JsonObject: //case Base_TN_NodeType.JsonArray: // Show the Edit menu item. editToolStripMenuItem1.Enabled = true; break; default: // Disable the Edit menu item. editToolStripMenuItem1.Enabled = false; break; } // Enable the Jump to sub-menu jumpToToolStripMenuItem.Enabled = true; // GD nodes always have load items visible, even if enabled loadNextLevelToolStripMenuItem.Enabled = true; loadAllLevelsToolStripMenuItem.Enabled = true; // We're in the Game Data already, so disable selection of it thisObjectInGameDataViewToolStripMenuItem.Enabled = false; thisObjectInGameDataViewToolStripMenuItem.Checked = true; // Disable these two as they're Solar System related rootOfDockingTreeToolStripMenuItem.Enabled = false; parentCelestialBodyToolStripMenuItem.Enabled = false; // Cast the node to an Json_TN type Json_TN gDnode = (Json_TN)treeView1.SelectedNode; // Disable the LoadNextLevel item if it's already been loaded. if (gDnode.ChildNodesLoaded) { loadNextLevelToolStripMenuItem.Enabled = false; } else { loadNextLevelToolStripMenuItem.Enabled = true; } if (gDnode.LinkedSolarSystemNode != null) { // It's a Game Data node that has a linked Solar System node // Enable the Jump to menu item thisObjectInSolarSystemViewToolStripMenuItem.Enabled = true; thisObjectInSolarSystemViewToolStripMenuItem.Checked = false; } else { thisObjectInSolarSystemViewToolStripMenuItem.Enabled = false; thisObjectInSolarSystemViewToolStripMenuItem.Checked = false; } } else if (t.Equals(typeof(Base_TN)) && node.NodeType == Base_TN_NodeType.StationBlueprintFile) { // Enable the Edit menu item. editToolStripMenuItem1.Enabled = true; // Disable the Jump to sub-menu jumpToToolStripMenuItem.Enabled = false; // Disable Jump to sub-items. thisObjectInGameDataViewToolStripMenuItem.Enabled = false; thisObjectInGameDataViewToolStripMenuItem.Checked = false; thisObjectInSolarSystemViewToolStripMenuItem.Enabled = false; thisObjectInSolarSystemViewToolStripMenuItem.Checked = false; rootOfDockingTreeToolStripMenuItem.Enabled = false; parentCelestialBodyToolStripMenuItem.Enabled = false; // Disable load items. loadNextLevelToolStripMenuItem.Enabled = false; loadAllLevelsToolStripMenuItem.Enabled = false; } // Handles SolarSystem_TN Nodes for the Solar System representation. else if (t.Equals(typeof(SolarSystem_TN))) { // We're working with a SOLAR SYSTEM node // Hide the Edit menu item. editToolStripMenuItem1.Enabled = false; // Disable the Json Data View option. //jsonDataViewToolStripMenuItem.Enabled = false; // Solar System nodes never have load options loadNextLevelToolStripMenuItem.Enabled = false; loadAllLevelsToolStripMenuItem.Enabled = false; // We're in the Solar System already, so disable selection of it thisObjectInSolarSystemViewToolStripMenuItem.Enabled = false; thisObjectInSolarSystemViewToolStripMenuItem.Checked = true; // Cast the node as an SolarSystem_TN type SolarSystem_TN sSnode = (SolarSystem_TN)treeView1.SelectedNode; if (sSnode.GUID == -1 || sSnode.NodeType == Base_TN_NodeType.SolarSystemView || sSnode.NodeType == Base_TN_NodeType.BlueprintHierarchyView) { // We're dealing with the Solar System Root Node or a Blueprint Hierarchy // View node, special cases. jumpToToolStripMenuItem.Enabled = false; thisObjectInGameDataViewToolStripMenuItem.Enabled = false; thisObjectInGameDataViewToolStripMenuItem.Checked = false; } else { if (sSnode.LinkedGameDataNode == null) // throw new NullReferenceException("sNode.LinkedGameDataNode was null."); { thisObjectInGameDataViewToolStripMenuItem.Enabled = false; thisObjectInGameDataViewToolStripMenuItem.Checked = false; } else { thisObjectInGameDataViewToolStripMenuItem.Enabled = true; thisObjectInGameDataViewToolStripMenuItem.Checked = false; } // Enable the Jump to sub-menu unless it's the Solar System root node if (sSnode.GUID != -1) { jumpToToolStripMenuItem.Enabled = true; } else { jumpToToolStripMenuItem.Enabled = false; } // Enable the Root of Docking Tree option only if the node's parent type // is a ship, indicating it is docked to something (rather than something // being docked *to* this node i.e. child nodes). rootOfDockingTreeToolStripMenuItem.Enabled = sSnode.IsDockedToParent; } } // Handles Blueprint_TN for blueprint files. else if (t.Equals(typeof(Blueprint_TN))) { // Some decision making logic needed here if (node.NodeType == Base_TN_NodeType.StationBlueprintFile) { // Show the Edit menu item. editToolStripMenuItem1.Enabled = true; } else { editToolStripMenuItem1.Enabled = false; } // Disable the Json Data View //jsonDataViewToolStripMenuItem.Enabled = false; // Disable the Jump to sub-menu jumpToToolStripMenuItem.Enabled = false; // Disable the Solar System Jump to option thisObjectInSolarSystemViewToolStripMenuItem.Enabled = false; thisObjectInSolarSystemViewToolStripMenuItem.Checked = false; // Disable the Game Data Jump to option thisObjectInGameDataViewToolStripMenuItem.Enabled = false; thisObjectInGameDataViewToolStripMenuItem.Checked = false; // Disable these two as they're Solar System related rootOfDockingTreeToolStripMenuItem.Enabled = false; parentCelestialBodyToolStripMenuItem.Enabled = false; // Disable the load options loadNextLevelToolStripMenuItem.Enabled = false; loadAllLevelsToolStripMenuItem.Enabled = false; } // Default behaviour - handles other node types. else { // Hide the Edit menu item. editToolStripMenuItem1.Enabled = false; // Disable the Json Data View //jsonDataViewToolStripMenuItem.Enabled = false; // Disable the Jump to sub-menu jumpToToolStripMenuItem.Enabled = false; // Disable the Solar System Jump to option thisObjectInSolarSystemViewToolStripMenuItem.Enabled = false; thisObjectInSolarSystemViewToolStripMenuItem.Checked = false; // Disable the Game Data Jump to option thisObjectInGameDataViewToolStripMenuItem.Enabled = false; thisObjectInGameDataViewToolStripMenuItem.Checked = false; // Disable these two as they're Solar System related rootOfDockingTreeToolStripMenuItem.Enabled = false; parentCelestialBodyToolStripMenuItem.Enabled = false; // Disable the load options loadNextLevelToolStripMenuItem.Enabled = false; loadAllLevelsToolStripMenuItem.Enabled = false; } // Show the ContextMenuStrip. contextMenuStrip1.Show(treeView1, e.Location); } }