source: trunk/CrypPlugins/P2PEditor/GUI/P2PEditorPresentation.xaml.cs @ 1619

Last change on this file since 1619 was 1619, checked in by Paul Lelgemann, 12 years ago

+ P2PEditor: new tab, which "invites" to connect to the network

File size: 4.5 KB
Line 
1/*
2   Copyright 2010 Paul Lelgemann, University of Duisburg-Essen
3
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15*/
16
17using System;
18using System.Collections.Generic;
19using System.Windows;
20using System.Windows.Threading;
21using Cryptool.P2P;
22using Cryptool.P2PEditor.Distributed;
23
24namespace Cryptool.P2PEditor.GUI
25{
26    /// <summary>
27    /// Interaction logic for P2PEditorPresentation.xaml
28    /// </summary>
29    public partial class P2PEditorPresentation
30    {
31        public static readonly DependencyProperty JobsProperty = DependencyProperty.Register("Jobs",
32                                                                                             typeof (
33                                                                                                 List<DistributedJob>),
34                                                                                             typeof (
35                                                                                                 P2PEditorPresentation));
36
37        public static readonly DependencyProperty IsP2PConnectedProperty =
38            DependencyProperty.Register("IsP2PConnected",
39                                        typeof (
40                                            Boolean),
41                                        typeof (
42                                            P2PEditorPresentation), new PropertyMetadata(false));
43
44        public static readonly DependencyProperty IsP2PConnectingProperty =
45            DependencyProperty.Register("IsP2PConnecting",
46                                        typeof(
47                                            Boolean),
48                                        typeof(
49                                            P2PEditorPresentation), new PropertyMetadata(false));
50
51        public P2PEditorPresentation(P2PEditor p2PEditor, JobListManager jobListManager)
52        {
53            P2PEditor = p2PEditor;
54            JobListManager = jobListManager;
55            P2PEditorPresentation = this;
56
57            P2PManager.ConnectionManager.OnP2PConnectionStateChangeOccurred += HandleChangedPeerToPeerConnectionState;
58
59            InitializeComponent();
60
61            UpdateDisplay();
62
63            if (!P2PManager.IsConnected)
64            {
65                ShowConnectTab();
66            }
67        }
68
69        private void HandleChangedPeerToPeerConnectionState(object sender, bool newState)
70        {
71            Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(UpdateConnectionState));
72
73            if (P2PManager.IsConnected)
74            {
75                ShowActiveJobs();
76            }
77            else
78            {
79                ShowConnectTab();
80            }
81        }
82
83        public List<DistributedJob> Jobs
84        {
85            get { return (List<DistributedJob>) GetValue(JobsProperty); }
86            set { SetValue(JobsProperty, value); }
87        }
88
89        public Boolean IsP2PConnected
90        {
91            get { return (Boolean) GetValue(IsP2PConnectedProperty); }
92            set { SetValue(IsP2PConnectedProperty, value); }
93        }
94
95        public Boolean IsP2PConnecting
96        {
97            get { return (Boolean)GetValue(IsP2PConnectingProperty); }
98            set { SetValue(IsP2PConnectingProperty, value); }
99        }
100
101        private void UpdateDisplay()
102        {
103            UpdateConnectionState();
104            ActiveJobsControl.UpdateJobList();
105        }
106
107        internal void UpdateConnectionState()
108        {
109            IsP2PConnected = P2PManager.IsConnected;
110            IsP2PConnecting = P2PManager.IsConnecting;
111        }
112
113        internal void ShowJobCreation()
114        {
115            JobTabControl.SelectedItem = JobCreationTab;
116        }
117
118        internal void ShowActiveJobs()
119        {
120            UpdateDisplay();
121            JobTabControl.SelectedItem = ActiveJobsTab;
122        }
123
124        internal void ShowConnectTab()
125        {
126            JobTabControl.SelectedItem = ConnectTab;
127        }
128    }
129}
Note: See TracBrowser for help on using the repository browser.