source: trunk/CrypPlugins/P2PEditor/GUI/Controls/ConnectView.xaml.cs @ 2358

Last change on this file since 2358 was 2358, checked in by kopal, 11 years ago
  • multiple connections to the p2p network are now avoided
  • some design changes
File size: 5.0 KB
Line 
1using System;
2using System.Windows;
3using Cryptool.P2P;
4using System.Windows.Media.Animation;
5using System.Windows.Threading;
6using System.Threading;
7using Cryptool.P2P.Internal;
8using PeersAtPlay.CertificateLibrary.Certificates;
9using Cryptool.PluginBase;
10using System.IO;
11
12namespace Cryptool.P2PEditor.GUI.Controls
13{
14    public partial class ConnectTab
15    {
16
17        public static readonly DependencyProperty IsP2PConnectingProperty =
18            DependencyProperty.Register("IsP2PConnecting",
19                                        typeof(
20                                            Boolean),
21                                        typeof(
22                                            ConnectTab), new PropertyMetadata(false));
23
24        public Boolean IsP2PConnecting
25        {
26            get { return (Boolean)GetValue(IsP2PConnectingProperty); }
27            set { SetValue(IsP2PConnectingProperty, value); }
28        }
29
30        public ConnectTab()
31        {
32            InitializeComponent();
33
34            P2PManager.ConnectionManager.OnP2PTryConnectingStateChangeOccurred += new ConnectionManager.P2PTryConnectingStateChangeEventHandler(delegate(object sender, bool newState)
35            {
36                if (newState)
37                {
38                    ((P2PEditorPresentation)P2PEditor.Presentation).UpdateConnectionState();
39
40                    Storyboard storyboard = (Storyboard)FindResource("AnimateBigWorldIcon");
41                    storyboard.Begin();   
42                }
43                else
44                {
45                    ((P2PEditorPresentation)P2PEditor.Presentation).UpdateConnectionState();
46
47                    Storyboard storyboard = (Storyboard)FindResource("AnimateBigWorldIcon");
48                    storyboard.Stop();   
49                }
50            });
51
52        }
53
54        private void ConnectButtonClick(object sender, RoutedEventArgs e)
55        {
56            try
57            {
58                if (CertificateServices.GetPeerCertificateByAvatar(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "PeersAtPlay" + Path.DirectorySeparatorChar + "Certificates" + Path.DirectorySeparatorChar),
59                    P2PSettings.Default.PeerName, P2PSettings.Default.Password) == null)
60                {
61                    System.Windows.MessageBox.Show("Cannot connect, account \"" + P2PSettings.Default.PeerName + "\" not found!", "Can not connect.");
62                    return;
63                }
64            }
65            catch (NoCertificateFoundException)
66            {
67                System.Windows.MessageBox.Show("Cannot connect, account \"" + P2PSettings.Default.PeerName + "\" not found!", "Can not connect.");
68                return;
69            }           
70            catch (Exception ex)
71            {
72                System.Windows.MessageBox.Show("Cannot connect using account \"" + P2PSettings.Default.PeerName + "\": " + (ex.InnerException != null ? ex.InnerException.Message : ex.Message), "Can not connect.");
73                return;
74            }
75
76            if (!P2PManager.IsConnected)
77                P2PManager.Connect();
78        }
79
80        private void HelpButtonClick(object sender, RoutedEventArgs e)
81        {
82            ((P2PEditorPresentation) P2PEditor.Presentation).ShowHelp();
83        }
84
85        private void GetACertificateButton_Click(object sender, RoutedEventArgs e)
86        {
87            P2PEditorPresentation.ShowGetNewCertificateView();
88        }
89       
90        private void Username_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
91        {
92            ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).PeerName = this.Username.Text;
93        }
94
95        private void Worldname_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
96        {
97            ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).WorldName = this.Worldname.Text;
98        }
99
100        private void Password_PasswordChanged(object sender, RoutedEventArgs e)
101        {
102            ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).Password = this.Password.Password;
103        }
104
105        private void P2PUserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
106        {
107            this.Username.Text = ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).PeerName;
108            this.Worldname.Text = ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).WorldName;
109            this.Password.Password = ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).Password;
110            if (this.IsP2PConnecting)
111            {
112                Storyboard storyboard = (Storyboard)FindResource("AnimateBigWorldIcon");
113                storyboard.Begin();
114            }
115            else
116            {
117                Storyboard storyboard = (Storyboard)FindResource("AnimateBigWorldIcon");
118                storyboard.Stop();
119            }
120        }
121    }
122}
Note: See TracBrowser for help on using the repository browser.