From b72c006915ce4b8a25654c9d26dd889e97060c7a Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sat, 17 Feb 2018 11:42:21 +0000 Subject: [PATCH] Able to edit links --- EduNetworkBuilder/LinkEditor.cs | 64 ++++++++++++++++++++++++++++- EduNetworkBuilder/NetworkBuilder.cs | 19 +++++++++ EduNetworkBuilder/NetworkLink.cs | 5 +++ 3 files changed, 87 insertions(+), 1 deletion(-) diff --git a/EduNetworkBuilder/LinkEditor.cs b/EduNetworkBuilder/LinkEditor.cs index aeecb2e..76c6097 100644 --- a/EduNetworkBuilder/LinkEditor.cs +++ b/EduNetworkBuilder/LinkEditor.cs @@ -19,6 +19,7 @@ namespace EduNetworkBuilder NetworkDevice Source=null; NetworkDevice Dest=null; bool processing = false; + NetworkLink EditingLink = null; List UsedLinks = new List(); public LinkEditor(NetworkDevice Src, NetworkDevice Dst) @@ -56,6 +57,15 @@ namespace EduNetworkBuilder } } + public LinkEditor(NetworkLink FromWhat) + { + InitializeComponent(); + LanguagifyComponents(); + + EditingLink = FromWhat; + UpdateFormFromLink(); //read in all the previous values. + } + private void LanguagifyComponents() { Text = NB.Translate("LE_btnLink"); @@ -118,6 +128,7 @@ namespace EduNetworkBuilder lbSrcNic.Items.Add(tString); } } + if (EditingLink != null) lbSrcNic.Items.Add(EditingLink.Src.NicName); lbDstHost.Items.Clear(); foreach (string tString in dstHostnames) @@ -150,6 +161,7 @@ namespace EduNetworkBuilder lbDstNic.Items.Add(tString); } } + if (EditingLink != null) lbDstNic.Items.Add(EditingLink.Dst.NicName); if (SrcNic != "") { @@ -193,7 +205,7 @@ namespace EduNetworkBuilder processing = false; } - private void btnLink_Click(object sender, EventArgs e) + private NetworkLink NewLinkFromSettings() { Network Net = NB.GetNetwork(); NetworkDevice Src = Net.DeviceFromName(lbSrcHost.SelectedItem.ToString()); @@ -206,6 +218,20 @@ namespace EduNetworkBuilder if (sNic.GetNicType == NicType.wport || sNic.GetNicType == NicType.wlan) LT = LinkType.wireless; //We cannot have broken wireless links the same way. NetworkLink newLink = new NetworkLink(sNic.myID, dNic.myID, LT); + return newLink; + } + + private void btnLink_Click(object sender, EventArgs e) + { + Network Net = NB.GetNetwork(); + + if(EditingLink != null) + { + Net.RemoveComponent(EditingLink); //get rid of the old one and put the new one in + EditingLink = null; + } + + NetworkLink newLink = NewLinkFromSettings(); Net.AddItem(newLink); Close(); } @@ -239,6 +265,42 @@ namespace EduNetworkBuilder Close(); } + private void UpdateFormFromLink() + { + + Network Net = NB.GetNetwork(); + NetworkDevice Src = Net.GetDeviceFromID(EditingLink.Src.HostID); + NetworkCard sNic = Src.NicFromID(EditingLink.Src.NicID); + NetworkDevice Dst = Net.GetDeviceFromID(EditingLink.Dst.HostID); + NetworkCard dNic = Dst.NicFromID(EditingLink.Dst.NicID); + LinkType LT = EditingLink.theLinkType; + + lbSrcNic.Items.Clear(); + //List the Nics of the selected host + List srcNics = Net.NetworkCardForHostList(Src.hostname, false, true); + foreach (string tString in srcNics) + { + lbSrcNic.Items.Add(tString); + } + + lbDstNic.Items.Clear(); + List dstNics = Net.NetworkCardForHostList(Dst.hostname, false, true, sNic.GetNicType); + foreach (string tString in dstNics) + { + lbDstNic.Items.Add(tString); + } + + UpdateDeviceList(); + + lbSrcHost.SelectedItem = Src.hostname; + lbSrcNic.SelectedItem = sNic.NicName(); + lbDstHost.SelectedItem = Dst.hostname; + lbDstNic.SelectedItem = dNic.NicName(); + cbLinkType.SelectedItem = LT.ToString(); + + UpdateDeviceList(); + } + private void LinkEditor_Shown(object sender, EventArgs e) { BuilderWindow BW = NB.GetBuilderWin(); diff --git a/EduNetworkBuilder/NetworkBuilder.cs b/EduNetworkBuilder/NetworkBuilder.cs index a798eb7..75b16cc 100644 --- a/EduNetworkBuilder/NetworkBuilder.cs +++ b/EduNetworkBuilder/NetworkBuilder.cs @@ -948,6 +948,10 @@ namespace EduNetworkBuilder pbNetworkView.ContextMenuStrip.Items[index].Tag = LinkReleasedOn; pbNetworkView.ContextMenuStrip.Items[index++].Click += pbNetworkView_RemoveNetLink_Click; + pbNetworkView.ContextMenuStrip.Items.Add(NB.Translate("_Edit")); + pbNetworkView.ContextMenuStrip.Items[index].Tag = LinkReleasedOn; + pbNetworkView.ContextMenuStrip.Items[index++].Click += pbNetworkView_EditNetLink_Click; + pbNetworkView.ContextMenuStrip.Visible = true; pbNetworkView.ContextMenuStrip.Show(Cursor.Position); @@ -1085,6 +1089,21 @@ namespace EduNetworkBuilder } + private void pbNetworkView_EditNetLink_Click(object sender, EventArgs e) + { + ToolStripItem thing = (ToolStripItem)sender; + if (thing.Tag != null) + { + NetworkLink NL = (NetworkLink)thing.Tag; + //This may delete the old link and make a new one + LinkEditor LE = new LinkEditor(NL); + LE.ShowDialog(); + } + myNetwork.TestForCompletion(true); + pbNetworkView.Update(); + UpdateVisuals(); + } + private void pbNetworkView_RemoveNetLink_Click(object sender, EventArgs e) { ToolStripItem thing = (ToolStripItem)sender; diff --git a/EduNetworkBuilder/NetworkLink.cs b/EduNetworkBuilder/NetworkLink.cs index a91fe89..c3408e4 100644 --- a/EduNetworkBuilder/NetworkLink.cs +++ b/EduNetworkBuilder/NetworkLink.cs @@ -82,6 +82,11 @@ namespace EduNetworkBuilder { get { return DstNic; } } + public void SetSourceDest(HostNicID src, HostNicID dst) + { + SrcNic = src; + DstNic = dst; + } public override void Load(XmlNode theNode) { foreach (XmlNode Individual in theNode.ChildNodes)