source: trunk/CrypPlugins/WorkspaceManager/View/VisualComponents/DataPresentation.xaml.cs @ 2119

Last change on this file since 2119 was 2119, checked in by matkovic, 11 years ago

-DataPresentation redesigned
-Usability improved

File size: 3.6 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Data;
8using System.Windows.Documents;
9using System.Windows.Input;
10using System.Windows.Media;
11using System.Windows.Media.Imaging;
12using System.Windows.Navigation;
13using System.Windows.Shapes;
14using WorkspaceManager.View.Container;
15using System.Collections.ObjectModel;
16using System.Windows.Threading;
17using System.Collections;
18using System.ComponentModel;
19
20namespace WorkspaceManager.View.VisualComponents
21{
22    /// <summary>
23    /// Interaction logic for DataPresentation.xaml
24    /// </summary>
25    public partial class DataPresentation : UserControl
26    {
27        private ObservableCollection<CollectionElement> valueCollection;
28        public ObservableCollection<CollectionElement> ValueCollection
29        {
30            get { return valueCollection; }
31            set { valueCollection = value; }
32        }
33
34        public DataPresentation()
35        {
36            InitializeComponent();
37            valueCollection = new ObservableCollection<CollectionElement>();
38            listViewLogList.DataContext = ValueCollection;
39            DataContext = this;
40        }
41
42        public DataPresentation(List<ConnectorView> list)
43        {
44            InitializeComponent();
45            valueCollection = new ObservableCollection<CollectionElement>();
46            listViewLogList.DataContext = ValueCollection;
47            listViewLogList.SelectionChanged += new SelectionChangedEventHandler(listViewLogList_SelectionChanged);
48
49            foreach (ConnectorView connector in list)
50            {
51                ValueCollection.Add(new CollectionElement(connector, DataBox));
52            }
53        }
54
55        void listViewLogList_SelectionChanged(object sender, SelectionChangedEventArgs e)
56        {
57            if (e.AddedItems.Count == 0)
58                return;
59               
60            IList collection = (IList)e.AddedItems;
61            var list = collection.Cast<View.VisualComponents.DataPresentation.CollectionElement>();
62
63            list.First().Start();
64            if(list.First().Connector.model.Outgoing)
65                Input.Text = "Connector Type: Output";
66            else
67                Input.Text = "Connector Type: Input";
68        }
69
70        public class CollectionElement : ItemsControl
71        {
72            private String data;
73            public String Data { get { return data; } set { Block.Text = value; data = value; } }
74            public String Caption { get; set; }
75            private DispatcherTimer timer = new DispatcherTimer();
76            public ConnectorView Connector { get; set; }
77            public TextBlock Block { get; set; }
78
79            public CollectionElement(ConnectorView element, TextBlock textBlock)
80            {
81                Connector = element;
82                this.Block = textBlock;
83                Caption = element.Model.ConnectorType.Name;
84                timer.Interval = new TimeSpan(0, 0, 5);
85                timer.Tick +=new EventHandler(timer_Tick);
86            }
87
88            public void Start()
89            {
90                timer.Start();
91                if (Connector.model.Data != null)
92                    Data = Connector.model.Data.ToString();
93            }
94
95            public void Stop()
96            {
97                timer.Stop();
98            }
99
100            void timer_Tick(object sender, EventArgs e)
101            {
102                if (Connector.model.Data != null)
103                    Data = Connector.model.Data.ToString();
104            }
105        }
106    }
107}
Note: See TracBrowser for help on using the repository browser.