public ConnectTCPRadioButton(ControlEventQueue dispatcher, PresenterModel model, ManualConnectionPanel manual, Point location, int width)
        {
            this.m_EventQueue = dispatcher;
            this.m_Model = model;
            this.m_Manual = manual;
            this.m_Connected = false;
            this.FlatStyle = FlatStyle.System;
            this.Font = Model.Viewer.ViewerStateModel.StringFont1;
            this.Text = Strings.ConnectToTCPServer;
            this.Location = location;
            this.Size = new Size(width, this.Font.Height + 5);
            this.m_ClassroomManager = null;

            //Watch for Role changes and disable if role is Instructor.
            this.m_RoleChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.m_EventQueue, new PropertyEventHandler(this.HandleRoleChanged));
            this.m_Model.Participant.Changed["Role"].Add(this.m_RoleChangedDispatcher.Dispatcher);
            using (Synchronizer.Lock(this.m_Model.Participant.SyncRoot)) {
                if (this.m_Model.Participant.Role is InstructorModel)
                    this.Enabled = false;
                else
                    this.Enabled = true;
            }

            //should probably make this a listener
            //Do persistence in a more intelligent way - this doesn't make the popup pop up.
            /*using (Synchronizer.Lock(this.m_Model.ViewerState.SyncRoot)) {
                if (this.Text == this.m_Model.ViewerState.ManualConnectionButtonName) {
                    this.Checked = true;
                    }
                }*/

            this.CheckedChanged += new EventHandler(OnClick);

            this.m_ProtocolCollectionHelper = new ProtocolCollectionHelper(this, this.m_Model.Network);
        }
        public ConnectTCPRadioButton(ControlEventQueue dispatcher, PresenterModel model, ManualConnectionPanel manual, Point location, int width)
        {
            this.m_EventQueue       = dispatcher;
            this.m_Model            = model;
            this.m_Manual           = manual;
            this.m_Connected        = false;
            this.FlatStyle          = FlatStyle.System;
            this.Font               = Model.Viewer.ViewerStateModel.StringFont1;
            this.Text               = Strings.ConnectToTCPServer;
            this.Location           = location;
            this.Size               = new Size(width, this.Font.Height + 5);
            this.m_ClassroomManager = null;

            //Watch for Role changes and disable if role is Instructor.
            this.m_RoleChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.m_EventQueue, new PropertyEventHandler(this.HandleRoleChanged));
            this.m_Model.Participant.Changed["Role"].Add(this.m_RoleChangedDispatcher.Dispatcher);
            using (Synchronizer.Lock(this.m_Model.Participant.SyncRoot)) {
                if (this.m_Model.Participant.Role is InstructorModel)
                {
                    this.Enabled = false;
                }
                else
                {
                    this.Enabled = true;
                }
            }

            //should probably make this a listener
            //Do persistence in a more intelligent way - this doesn't make the popup pop up.

            /*using (Synchronizer.Lock(this.m_Model.ViewerState.SyncRoot)) {
             *  if (this.Text == this.m_Model.ViewerState.ManualConnectionButtonName) {
             *      this.Checked = true;
             *      }
             *  }*/


            this.CheckedChanged += new EventHandler(OnClick);


            this.m_ProtocolCollectionHelper = new ProtocolCollectionHelper(this, this.m_Model.Network);
        }
 public ProtocolCollectionHelper(ManualConnectionPanel parent, NetworkModel network)
     : base(parent.m_EventQueue, network, "Protocols")
 {
     this.m_Parent = parent;
     base.Initialize();
 }
 public ClassroomCollectionHelper(ManualConnectionPanel parent, ProtocolModel protocol)
     : base(parent.m_EventQueue, protocol, "Classrooms")
 {
     this.m_Parent = parent;
     base.Initialize();
 }
            public ManualConnectionRadioButton(ControlEventQueue dispatcher, ClassroomModel classroom, ManualConnectionPanel parent, int i)
            {
                if (classroom == null)
                    throw new ArgumentNullException("classroom",
                        "The ClassroomModel associated with this ManualConnectionRadioButton cannot be null.");

                this.Font = Model.Viewer.ViewerStateModel.StringFont1;
                this.m_EventQueue = dispatcher;
                this.m_Classroom = classroom;
                this.Tag = classroom;
                this.Parent = parent;
                this.Parent.Controls.Add(this);
                this.index = i;
                int count = this.Parent.Controls.Count;
                #if RTP_BUILD
                this.Location = new Point(10,
                    (int)(((ManualConnectionPanel)(this.Parent)).MulticastLabel.Bottom +5
                        + 1.5*this.Font.Height * (this.index)));
                #endif

                this.Size = new Size(this.Parent.Width-15, this.Font.Height);

                string classroomName = "";
                using (Synchronizer.Lock(this.Classroom.SyncRoot)) {
                    classroomName = this.Classroom.HumanName;
                    }

                using (Synchronizer.Lock(((ManualConnectionPanel)(this.Parent)).m_Model.ViewerState.SyncRoot)) {
                    if (classroomName == ((ManualConnectionPanel)(this.Parent)).m_Model.ViewerState.ManualConnectionButtonName) {
                        this.Checked = true;
                        }
                    }

                if (classroomName == Strings.InstructorStartTCPServer) {

                    this.Location = new Point(10,
                        (int)(((ManualConnectionPanel)(this.Parent)).UnicastLabel.Bottom
                            + 4 * this.Font.Height * (this.index)));
                    this.Size = new Size(this.Parent.Width - 15, 3*this.Font.Height);
                        //this.Location = new Point(10, 200 + 30 * (this.index));
                        //this.Size = new Size(180, 30);
                        using (Synchronizer.Lock(((ManualConnectionPanel)(this.Parent)).m_Model.Participant.SyncRoot)) {
                            if (!(((ManualConnectionPanel)(this.Parent)).m_Model.Participant.Role is InstructorModel)) {
                                this.Visible = false;
                                this.Enabled = false;
                                }
                            }
                    }
                if (m_Classroom.ClassroomModelType == ClassroomModelType.Dynamic) {
                    //Note the locations of the radio buttons for the advertised (Dynamic) classrooms are set by the ManualConnectionPanel.UpdateLayout method

                    this.Size = new Size(this.Parent.Width - 20, 4 * this.Font.Height);

                    //This is a hack...  figure out why added more than once.
                    bool isAlreadyAdded = false;
                    int UDPControls = ((ManualConnectionPanel)this.Parent).m_Startup.m_UDPPanel.Controls.Count;
                    for (int j = 0; j < UDPControls; j++) {
                        if (((ManualConnectionPanel)this.Parent).m_Startup.m_UDPPanel.Controls[j].Text == classroomName) {
                            isAlreadyAdded = true;
                        }
                    }

                    if (!isAlreadyAdded) {
                        ((ManualConnectionPanel)this.Parent).m_Startup.m_UDPPanel.Controls.Add(new UDPPresentationRadioButton(this.m_Classroom, ((ManualConnectionPanel)this.Parent).m_Startup, UDPControls, this.m_EventQueue));
                        ((ManualConnectionPanel)this.Parent).m_Startup.m_UDPPanel.UpdateLayout();
                    }

                    using (Synchronizer.Lock(((ManualConnectionPanel)(this.Parent)).m_Model.Participant.SyncRoot)) {
                        if (((ManualConnectionPanel)(this.Parent)).m_Model.Participant.Role is InstructorModel) {
                            this.Visible = false;
                            }
                        }
                    }

                //If the role changes we should disconnect from our classroom
                this.m_ViewerStateRoleListener = new EventQueue.PropertyEventDispatcher(((ManualConnectionPanel)(this.Parent)).m_EventQueue,
                            new PropertyEventHandler(this.HandleViewerStateRoleChanged));
                ((ManualConnectionPanel)(this.Parent)).m_Model.ViewerState.Changed["iRole"].Add(this.m_ViewerStateRoleListener.Dispatcher);

                this.m_HumanNameChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.m_EventQueue, new PropertyEventHandler(this.HandleHumanNameChanged));

                this.Classroom.Changed["HumanName"].Add(this.m_HumanNameChangedDispatcher.Dispatcher);

                this.CheckedChanged += new EventHandler(HandleCheckedChanged);

                this.HandleHumanNameChanged(this.Classroom, null);
            }
            public ManualConnectionRadioButton(ControlEventQueue dispatcher, ClassroomModel classroom, ManualConnectionPanel parent, int i)
            {
                if (classroom == null)
                {
                    throw new ArgumentNullException("classroom",
                                                    "The ClassroomModel associated with this ManualConnectionRadioButton cannot be null.");
                }


                this.Font         = Model.Viewer.ViewerStateModel.StringFont1;
                this.m_EventQueue = dispatcher;
                this.m_Classroom  = classroom;
                this.Tag          = classroom;
                this.Parent       = parent;
                this.Parent.Controls.Add(this);
                this.index = i;
                int count = this.Parent.Controls.Count;

#if RTP_BUILD
                this.Location = new Point(10,
                                          (int)(((ManualConnectionPanel)(this.Parent)).MulticastLabel.Bottom + 5
                                                + 1.5 * this.Font.Height * (this.index)));
#endif

                this.Size = new Size(this.Parent.Width - 15, this.Font.Height);

                string classroomName = "";
                using (Synchronizer.Lock(this.Classroom.SyncRoot)) {
                    classroomName = this.Classroom.HumanName;
                }


                using (Synchronizer.Lock(((ManualConnectionPanel)(this.Parent)).m_Model.ViewerState.SyncRoot)) {
                    if (classroomName == ((ManualConnectionPanel)(this.Parent)).m_Model.ViewerState.ManualConnectionButtonName)
                    {
                        this.Checked = true;
                    }
                }

                if (classroomName == Strings.InstructorStartTCPServer)
                {
                    this.Location = new Point(10,
                                              (int)(((ManualConnectionPanel)(this.Parent)).UnicastLabel.Bottom
                                                    + 4 * this.Font.Height * (this.index)));
                    this.Size = new Size(this.Parent.Width - 15, 3 * this.Font.Height);
                    //this.Location = new Point(10, 200 + 30 * (this.index));
                    //this.Size = new Size(180, 30);
                    using (Synchronizer.Lock(((ManualConnectionPanel)(this.Parent)).m_Model.Participant.SyncRoot)) {
                        if (!(((ManualConnectionPanel)(this.Parent)).m_Model.Participant.Role is InstructorModel))
                        {
                            this.Visible = false;
                            this.Enabled = false;
                        }
                    }
                }
                if (m_Classroom.ClassroomModelType == ClassroomModelType.Dynamic)
                {
                    //Note the locations of the radio buttons for the advertised (Dynamic) classrooms are set by the ManualConnectionPanel.UpdateLayout method

                    this.Size = new Size(this.Parent.Width - 20, 4 * this.Font.Height);

                    //This is a hack...  figure out why added more than once.
                    bool isAlreadyAdded = false;
                    int  UDPControls    = ((ManualConnectionPanel)this.Parent).m_Startup.m_UDPPanel.Controls.Count;
                    for (int j = 0; j < UDPControls; j++)
                    {
                        if (((ManualConnectionPanel)this.Parent).m_Startup.m_UDPPanel.Controls[j].Text == classroomName)
                        {
                            isAlreadyAdded = true;
                        }
                    }

                    if (!isAlreadyAdded)
                    {
                        ((ManualConnectionPanel)this.Parent).m_Startup.m_UDPPanel.Controls.Add(new UDPPresentationRadioButton(this.m_Classroom, ((ManualConnectionPanel)this.Parent).m_Startup, UDPControls, this.m_EventQueue));
                        ((ManualConnectionPanel)this.Parent).m_Startup.m_UDPPanel.UpdateLayout();
                    }

                    using (Synchronizer.Lock(((ManualConnectionPanel)(this.Parent)).m_Model.Participant.SyncRoot)) {
                        if (((ManualConnectionPanel)(this.Parent)).m_Model.Participant.Role is InstructorModel)
                        {
                            this.Visible = false;
                        }
                    }
                }


                //If the role changes we should disconnect from our classroom
                this.m_ViewerStateRoleListener = new EventQueue.PropertyEventDispatcher(((ManualConnectionPanel)(this.Parent)).m_EventQueue,
                                                                                        new PropertyEventHandler(this.HandleViewerStateRoleChanged));
                ((ManualConnectionPanel)(this.Parent)).m_Model.ViewerState.Changed["iRole"].Add(this.m_ViewerStateRoleListener.Dispatcher);



                this.m_HumanNameChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.m_EventQueue, new PropertyEventHandler(this.HandleHumanNameChanged));

                this.Classroom.Changed["HumanName"].Add(this.m_HumanNameChangedDispatcher.Dispatcher);

                this.CheckedChanged += new EventHandler(HandleCheckedChanged);

                this.HandleHumanNameChanged(this.Classroom, null);
            }
 public ClassroomCollectionHelper(ManualConnectionPanel parent, ProtocolModel protocol)
     : base(parent.m_EventQueue, protocol, "Classrooms")
 {
     this.m_Parent = parent;
     base.Initialize();
 }
 public ProtocolCollectionHelper(ManualConnectionPanel parent, NetworkModel network)
     : base(parent.m_EventQueue, network, "Protocols")
 {
     this.m_Parent = parent;
     base.Initialize();
 }