public EmoteControlPanel()
        {
            InitializeComponent();
            StudentDatabaseMenuItem.IsEnabled = false;
            _client = LearnersDbThalamusClient.GetInstance();
            _client.ClientConnected += delegate
            {
                _db = new ThalamusStudentDatabase();
                _db.ConnectedEvent += DbOnConnectedEvent;
                _db.TimeoutEvent += DbOnTimeoutEvent;
                this.Dispatcher.Invoke(new Action(() =>
                {
                    StudentDatabaseMenuItem.IsEnabled = true;
                    DatabaseStatus.Text = "Connecting...";
                    ControlPanelS2.IsEnabled = true;
                    ControlPanelS2.Init(_client,_db);

                    ControlPanelS1.IsEnabled = true;
                    ControlPanelS1.Init(_client, _db);
                    
                }));
            };
            ThalamusStatus.WatchedClient = _client;
            MainTabPanel.SelectedIndex = Properties.Settings.Default.SelectedTab;

#if !DEBUG
            ControlPanelS2.IsEnabled = false;
#endif
        }
 public void Init(LearnersDbThalamusClient client, IStudentsDatabase database)
 {
     Client = client;
     Database = database;
     database.StudentListUpdatedEvent += delegate(object sender, StudentListEventArgs args)
     {
         if (args.StudentList != null)
         {
             this.Dispatcher.Invoke(new Action(() =>
             {
                 Student1ComboBox.ItemsSource = Student2ComboBox.ItemsSource = args.StudentList;
             }));
         }
     };
     Database.ConnectedEvent += delegate(object sender, EventArgs args)
     {
         Database.GetAllStudentsAsync();
     };
 }
        public DatabaseWindow(ThalamusClient client, IStudentsDatabase db)
        {
            InitializeComponent();

            _controller = new DatabaseWindowController(db);

            // this snippet helps customizing the DatePicker format. (See -> http://www.codeproject.com/Questions/346685/How-to-Display-DatePicker-in-different-format)
            CultureInfo ci = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name); 
            ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
            Thread.CurrentThread.CurrentCulture = ci;

            
            IsEnabled = false;

            if (db.IsConnected())
            {
                LoadDatabaseData();
                DatabaseStatus.Text = "Connected";
                DatabaseStatus.Foreground = new SolidColorBrush(Colors.Green);
            }
            else
            {
                DatabaseStatus.Text = "Waiting for connection...";
            }

            db.ConnectedEvent += delegate(object sender, EventArgs args)
            {
                this.Dispatcher.Invoke(new Action(() =>
                {
                    DatabaseStatus.Text = "Connected";
                    DatabaseStatus.Foreground = new SolidColorBrush(Colors.Green);
                }));
                LoadDatabaseData();
            };
            db.ConnectedEvent += delegate(object sender, EventArgs args)
            {
                this.Dispatcher.Invoke(new Action(() =>
                {
                    DatabaseStatus.Text = "Timeout";
                    DatabaseStatus.Foreground = new SolidColorBrush(Colors.Red);
                }));
            };
        }
 public DatabaseWindowController(IStudentsDatabase db)
 {
     _db = db;
 }