PageRenderTime 42ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/source/samples/ObviousCode.Interlace.BitTunnel/BitTunnelServerExample/ServerForm.cs

https://bitbucket.org/VahidN/interlace
C# | 148 lines | 114 code | 33 blank | 1 comment | 4 complexity | 881752e5087d69512de08c6b00c8f339 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using ObviousCode.Interlace.BitTunnelLibrary;
  10. using ObviousCode.Interlace.BitTunnel.Connectivity;
  11. using System.Net;
  12. using BitTunnelServerExample.Controls;
  13. namespace BitTunnelServerExample
  14. {
  15. public partial class ServerForm : Form
  16. {
  17. AppSettings _settings;
  18. ServerInstance _instance;
  19. List<IServerControl> _serverControls;
  20. public ServerForm()
  21. {
  22. InitializeComponent();
  23. _settings = new AppSettings();
  24. //Default values
  25. _settings.Port = 1234;
  26. _settings.ServerAddress = IPAddress.Parse("127.0.0.1");
  27. _settings.ServerIsRemote = false;
  28. _instance = new ServerInstance(_settings);
  29. _instance.ConnectionMade += new EventHandler(_instance_ConnectionMade);
  30. _instance.ConnectionTerminated += new EventHandler(_instance_ConnectionTerminated);
  31. LoadControls();
  32. LoadMenu();
  33. SetupForConnection();
  34. }
  35. private void LoadControls()
  36. {
  37. _settingsControl.Server = _instance;
  38. _loggingControl.Server = _instance;
  39. _availableFilesControl.Server = _instance;
  40. _settingsControl.Settings = _settings;
  41. _loggingControl.Settings = _settings;
  42. _serverControls = new List<IServerControl>();
  43. _serverControls.Add(_settingsControl);
  44. _serverControls.Add(_loggingControl);
  45. _serverControls.Add(_availableFilesControl);
  46. }
  47. private void LoadMenu()
  48. {
  49. _menu.AfterSelect += new TreeViewEventHandler(_menu_AfterSelect);
  50. _menu.ImageList = new ImageList();
  51. _menu.ImageList.Images.Add(Images.Default);
  52. foreach (IServerControl control in _serverControls)
  53. {
  54. AddControlToMenu(control);
  55. }
  56. }
  57. private void AddControlToMenu(IServerControl control)
  58. {
  59. int imageKey = 0;
  60. if (control.MenuIcon != null)
  61. {
  62. _menu.ImageList.Images.Add(control.MenuIcon);
  63. imageKey = _menu.ImageList.Images.Count - 1;
  64. }
  65. TreeNode node = new TreeNode(control.MenuText, imageKey, imageKey);
  66. node.Tag = control;
  67. _menu.Nodes.Add(node);
  68. }
  69. private void ViewControl(UserControl control)
  70. {
  71. control.BringToFront();
  72. }
  73. void _menu_AfterSelect(object sender, TreeViewEventArgs e)
  74. {
  75. if (e.Node.Tag is UserControl)
  76. {
  77. ViewControl(e.Node.Tag as UserControl);
  78. }
  79. }
  80. private void _actionButton_Click(object sender, EventArgs e)
  81. {
  82. if (_instance.IsConnected)
  83. {
  84. _instance.Disconnect();
  85. }
  86. else
  87. {
  88. _instance.Connect();
  89. }
  90. }
  91. void _instance_ConnectionTerminated(object sender, EventArgs e)
  92. {
  93. SetupForConnection();
  94. }
  95. void _instance_ConnectionMade(object sender, EventArgs e)
  96. {
  97. SetupForDisconnection();
  98. }
  99. private void SetupForConnection()
  100. {
  101. _actionButton.Text = "Connect";
  102. }
  103. private void SetupForDisconnection()
  104. {
  105. _actionButton.Text = "Disconnect";
  106. }
  107. private void ServerForm_Load(object sender, EventArgs e)
  108. {
  109. _instance.Dispose();
  110. }
  111. private void _loggingControl_Load(object sender, EventArgs e)
  112. {
  113. }
  114. }
  115. }