aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LoadingErrorView.xaml
blob: 7682ba4ceebf873da159cff2ea838206885d4a83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<UserControl x:Class="Tango.PPC.UI.Views.LoadingErrorView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch"
             xmlns:vm="clr-namespace:Tango.PPC.UI.ViewModels"
             xmlns:global="clr-namespace:Tango.PPC.UI"
             xmlns:local="clr-namespace:Tango.PPC.UI.Views"
             mc:Ignorable="d" 
             d:DesignHeight="1280" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=vm:LoadingErrorViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.LoadingErrorViewVM}">
    <Grid>
        <DockPanel Margin="20 60 20 20">
            <StackPanel DockPanel.Dock="Top">
                <Image Source="../Images/warning-red.png" Width="300" Stretch="Uniform" HorizontalAlignment="Center"></Image>
                <TextBlock HorizontalAlignment="Center" Margin="0 40 0 0" FontSize="{StaticResource TangoHeaderFontSize}">Application Loading Error</TextBlock>
                <TextBlock HorizontalAlignment="Center" Margin="0 20 0 0" FontSize="{StaticResource TangoTitleFontSize}">The application has failed to load properly due to the following reason.</TextBlock>
                <TextBlock HorizontalAlignment="Center" Foreground="{StaticResource TangoGrayTextBrush}" TextAlignment="Center" Margin="100 20 100 0" TextWrapping="Wrap" Text="{Binding Error}"></TextBlock>
            </StackPanel>
            
            <Grid>
                <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Width="320">
                    <touch:TouchButton Command="{Binding RestartCommand}" Padding="0 30" CornerRadius="40">RESTART</touch:TouchButton>
                </StackPanel>
            </Grid>
        </DockPanel>
    </Grid>
</UserControl>
: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Tango.Core.EventArguments;
using Tango.Touch.Keyboard;

namespace Tango.Touch.Controls
{
    public class TouchTextBox : TouchInput
    {
        private TextBox _text_box;
        private PasswordBox _password_box;
        private DateTime _lost_focus_time;

        public event EventHandler TextChanged;

        public String Text
        {
            get { return (String)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }
        public static readonly DependencyProperty TextProperty =
            DependencyProperty.Register("Text", typeof(String), typeof(TouchTextBox), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, (d, e) => (d as TouchTextBox).OnTextChanged()));


        public int MaxLength
        {
            get { return (int)GetValue(MaxLengthProperty); }
            set { SetValue(MaxLengthProperty, value); }
        }
        public static readonly DependencyProperty MaxLengthProperty =
            DependencyProperty.Register("MaxLength", typeof(int), typeof(TouchTextBox), new PropertyMetadata(0));



        private void OnTextChanged()
        {
            TextChanged?.Invoke(this, new EventArgs());
        }

        public String Watermark
        {
            get { return (String)GetValue(WatermarkProperty); }
            set { SetValue(WatermarkProperty, value); }
        }
        public static readonly DependencyProperty WatermarkProperty =
            DependencyProperty.Register("Watermark", typeof(String), typeof(TouchTextBox), new PropertyMetadata(null));

        public bool IsPassword
        {
            get { return (bool)GetValue(IsPasswordProperty); }
            set { SetValue(IsPasswordProperty, value); }
        }
        public static readonly DependencyProperty IsPasswordProperty =
            DependencyProperty.Register("IsPassword", typeof(bool), typeof(TouchTextBox), new PropertyMetadata(false));

        public bool IsReadOnly
        {
            get { return (bool)GetValue(IsReadOnlyProperty); }
            set { SetValue(IsReadOnlyProperty, value); }
        }
        public static readonly DependencyProperty IsReadOnlyProperty =
            DependencyProperty.Register("IsReadOnly", typeof(bool), typeof(TouchTextBox), new PropertyMetadata(false));

        public ICommand TapCommand
        {
            get { return (ICommand)GetValue(TapCommandProperty); }
            set { SetValue(TapCommandProperty, value); }
        }
        public static readonly DependencyProperty TapCommandProperty =
            DependencyProperty.Register("TapCommand", typeof(ICommand), typeof(TouchTextBox), new PropertyMetadata(null));

        public Object TapCommandParameter
        {
            get { return (Object)GetValue(TapCommandParameterProperty); }
            set { SetValue(TapCommandParameterProperty, value); }
        }

        public static readonly DependencyProperty TapCommandParameterProperty =
            DependencyProperty.Register("TapCommandParameter", typeof(Object), typeof(TouchTextBox), new PropertyMetadata(null));

        public int CaretIndex
        {
            get
            {
                return _text_box != null ? _text_box.CaretIndex : 0;
            }
            set
            {
                if (_text_box != null)
                {
                    _text_box.CaretIndex = value;
                }
            }
        }

        static TouchTextBox()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(TouchTextBox), new FrameworkPropertyMetadata(typeof(TouchTextBox)));
        }

        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            _text_box = GetTemplateChild("PART_TextBox") as TextBox;
            _password_box = GetTemplateChild("PART_PasswordBox") as PasswordBox;

            _text_box.GotFocus += _text_box_GotFocus;
            _text_box.LostFocus += _text_box_LostFocus;


            this.RegisterForPreviewMouseOrTouchUp(OnMouseOrTouchUp);
        }

        private void _text_box_LostFocus(object sender, RoutedEventArgs e)
        {
            _lost_focus_time = DateTime.Now;
        }

        private void OnMouseOrTouchUp(object sender, MouseOrTouchEventArgs e)
        {
            if (TapCommand != null)
            {
                TapCommand.Execute(TapCommandParameter);
            }
        }

        private async void _text_box_GotFocus(object sender, RoutedEventArgs e)
        {
            if (DateTime.Now > _lost_focus_time.AddMilliseconds(200))
            {
                await Task.Delay(50);

                if (FocusSelectionMode == FocusSelectionMode.SelectAll)
                {
                    _text_box.SelectAll();
                }
                else if (FocusSelectionMode == FocusSelectionMode.ScrollToEnd)
                {
                    _text_box.CaretIndex = _text_box.Text.Length;
                }
            }
        }

        public new void Focus()
        {
            if (IsPassword)
            {
                _password_box.Focus();
            }
            else
            {
                _text_box.Focus();
            }
        }
    }
}