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

Last change on this file since 2447 was 2447, checked in by kopal, 11 years ago

added password reset gui

File size: 7.3 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.P2P.Internal;
23using Cryptool.P2PEditor.Distributed;
24using System.Threading;
25using System.Windows.Media.Animation;
26
27namespace Cryptool.P2PEditor.GUI
28{
29    /// <summary>
30    /// Interaction logic for P2PEditorPresentation.xaml
31    /// </summary>
32    public partial class P2PEditorPresentation
33    {
34        public static readonly DependencyProperty JobsProperty = DependencyProperty.Register("Jobs",
35                                                                                             typeof (
36                                                                                                 List<DistributedJob>),
37                                                                                             typeof (
38                                                                                                 P2PEditorPresentation));
39
40        public static readonly DependencyProperty IsP2PConnectedProperty =
41            DependencyProperty.Register("IsP2PConnected",
42                                        typeof (
43                                            Boolean),
44                                        typeof (
45                                            P2PEditorPresentation), new PropertyMetadata(false));
46
47        public static readonly DependencyProperty IsP2PConnectingProperty =
48            DependencyProperty.Register("IsP2PConnecting",
49                                        typeof(
50                                            Boolean),
51                                        typeof(
52                                            P2PEditorPresentation), new PropertyMetadata(false));
53
54        public P2PEditorPresentation(P2PEditor p2PEditor, JobListManager jobListManager)
55        {
56            P2PEditor = p2PEditor;
57            JobListManager = jobListManager;
58            P2PEditorPresentation = this;
59
60            P2PManager.ConnectionManager.OnP2PConnectionStateChangeOccurred += HandleChangedPeerToPeerConnectionState;
61
62            //We need this, because for a strange reason, the OnP2PConnectionStateChangeOccurred event is not triggered when reconnecting:
63            P2PManager.P2PBase.OnSystemJoined += new P2PBase.SystemJoined(delegate
64                                                                              {
65                                                                                  HandleChangedPeerToPeerConnectionState
66                                                                                      (null, true);
67                                                                              });
68
69            InitializeComponent();
70
71            UpdateDisplay();
72
73            this.Connect.P2PEditorPresentation = this;
74            this.GetNewCertificate.P2PEditorPresentation = this;
75            this.JobCreation.P2PEditorPresentation = this;
76            this.JobDisplay.P2PEditorPresentation = this;
77
78            if (this.IsP2PConnecting || !this.IsP2PConnected)
79            {
80                ShowConnectView();
81            }
82            else
83            {
84                ShowActiveJobsView();
85            }
86        }
87
88        private void HandleChangedPeerToPeerConnectionState(object sender, bool newState)
89        {
90            Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(UpdateConnectionState));
91
92            if (P2PManager.IsConnected)
93            {
94                Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(ShowActiveJobsView));
95            }
96            else
97            {
98                Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(ShowConnectView));
99            }
100        }
101
102        public List<DistributedJob> Jobs
103        {
104            get { return (List<DistributedJob>) GetValue(JobsProperty); }
105            set { SetValue(JobsProperty, value); }
106        }
107
108        public Boolean IsP2PConnected
109        {
110            get { return (Boolean) GetValue(IsP2PConnectedProperty); }
111            set { SetValue(IsP2PConnectedProperty, value); }
112        }
113
114        public Boolean IsP2PConnecting
115        {
116            get { return (Boolean)GetValue(IsP2PConnectingProperty); }
117            set { SetValue(IsP2PConnectingProperty, value); }
118        }
119
120        private void UpdateDisplay()
121        {
122            Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(UpdateConnectionState));
123            Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(JobDisplay.UpdateJobList));
124        }
125
126        internal void UpdateConnectionState()
127        {
128            IsP2PConnected = P2PManager.IsConnected;
129            IsP2PConnecting = P2PManager.IsConnecting;
130        }
131
132
133        internal void hideAllViews()
134        {
135            this.JobCreation.Visibility = Visibility.Hidden;
136            this.JobDisplay.Visibility = Visibility.Hidden;
137            this.Connect.Visibility = Visibility.Hidden;
138            this.GetNewCertificate.Visibility = Visibility.Hidden;
139            this.ActivateEmailView.Visibility = Visibility.Hidden;
140            this.ForgotPasswordView.Visibility = Visibility.Hidden;
141        }
142
143        internal void ShowGetNewCertificateView()
144        {
145            hideAllViews();
146            this.GetNewCertificate.Visibility = Visibility.Visible;           
147        }
148
149        internal void ShowActivateEmailView()
150        {
151            hideAllViews();
152            this.ActivateEmailView.Visibility = Visibility.Visible;
153        }
154
155        internal void ShowJobCreationView()
156        {
157            hideAllViews();
158            this.JobCreation.Visibility = Visibility.Visible;
159        }
160
161        internal void ShowActiveJobsView()
162        {
163            hideAllViews();
164            this.JobDisplay.Visibility = Visibility.Visible;
165            UpdateDisplay();
166        }
167
168        internal void ShowConnectView()
169        {
170            hideAllViews();
171            this.Connect.Visibility = Visibility.Visible;         
172        }
173
174        internal void ShowForgotPasswordView()
175        {
176            hideAllViews();
177            this.ForgotPasswordView.Visibility = Visibility.Visible;
178        }
179
180        internal void ShowHelp()
181        {         
182            //to be implemented
183        }
184
185        private void P2PEditorControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
186        {
187            if (this.IsP2PConnecting || !this.IsP2PConnected)
188            {
189                ShowConnectView();
190            }
191            else
192            {
193               ShowActiveJobsView();
194            }
195        }
196    }
197}
Note: See TracBrowser for help on using the repository browser.