Example #1
0
        private void OpenTab(object source, TimeLine.FocusFrameEventArgs args)
        {
            Data.Frame frame = args.Frame;
            foreach (var tab in frameTabs.Items)
            {
                if (tab is CloseableTabItem)
                {
                    CloseableTabItem item = (CloseableTabItem)tab;
                    if (item.DataContext.Equals(frame))
                    {
                        frameTabs.SelectedItem = item;
                        return;
                    }
                }
            }

            CloseableTabItem tabItem = new CloseableTabItem()
            {
                Header = "Loading...", DataContext = frame
            };

            FrameInfo info = new FrameInfo()
            {
                Height = Double.NaN, Width = Double.NaN, DataContext = null
            };

            info.DataContextChanged      += new DependencyPropertyChangedEventHandler((object sender, DependencyPropertyChangedEventArgs e) => { tabItem.Header = frame.Description; });
            info.SelectedTreeNodeChanged += new SelectedTreeNodeChangedHandler(FrameInfo_OnSelectedTreeNodeChanged);
            info.SetFrame(frame);

            tabItem.Add(info);

            frameTabs.Items.Add(tabItem);
            frameTabs.SelectedItem = tabItem;
        }
Example #2
0
        private void OpenTab(object source, TimeLine.FocusFrameEventArgs args)
        {
            Durable focusRange = null;

            if (args.Node != null)
            {
                focusRange = args.Node.Entry;
            }
            else if (args.Frame is EventFrame)
            {
                focusRange = (args.Frame as EventFrame).Header;
            }

            Data.Frame frame = args.Frame;
            foreach (var tab in frameTabs.Items)
            {
                if (tab is TabItem)
                {
                    TabItem item = (TabItem)tab;
                    if (item.DataContext.Equals(frame))
                    {
                        FrameInfo frameInfo = item.Content as FrameInfo;
                        frameTabs.SelectedItem = tab;
                        return;
                    }
                }
            }


            CloseableTabItem tabItem = new CloseableTabItem()
            {
                Header = "Loading...", DataContext = frame, CloseButtonEnabled = true
            };

            FrameInfo info = new FrameInfo(timeLine.Frames)
            {
                Height = Double.NaN, Width = Double.NaN, DataContext = null
            };

            info.DataContextChanged      += new DependencyPropertyChangedEventHandler((object sender, DependencyPropertyChangedEventArgs e) => { tabItem.Header = frame.Description; });
            info.SelectedTreeNodeChanged += new SelectedTreeNodeChangedHandler(FrameInfo_OnSelectedTreeNodeChanged);
            info.SetFrame(frame, focusRange);

            tabItem.AddFrameInfo(info);

            frameTabs.Items.Add(tabItem);
            frameTabs.SelectedItem = tabItem;

            info.FocusOnNode(focusRange);

/*
 *                      if (!string.IsNullOrEmpty(currFiltredText))
 *                      {
 *                              info.SummaryTable.FilterText.SetFilterText(currFiltredText);
 *                      }
 */
        }
Example #3
0
        void ThreadCanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (group == null)
            {
                return;
            }

            Point pos = e.GetPosition(this);

            if (isSelectionScopeDrag)
            {
                isSelectionScopeDrag = false;
                if (selectionScopeDragStart != pos)
                {
                    return;
                }
                else
                {
                    selectedScopes.Clear();
                    UpdateSelectedScopes();
                    Refresh();
                }
            }

            int threadIndex = GetThreadIndex(pos.Y);

            if (0 <= threadIndex && threadIndex < group.Threads.Count)
            {
                var frames = group.Threads[threadIndex].Events;

                long tick = Durable.MsToTick(timeRange.StartMS + Position + (pos.X / AdornedElement.RenderSize.Width) * Range);

                int index = BinarySearchClosestIndex(frames, tick);

                if (index > 0)
                {
                    EventFrame frame = frames[index];
                    Rect       rect  = CalculateRect(frame.Header, rows[threadIndex].Offset, rows[threadIndex].Height);
                    if (rect.Contains(pos))
                    {
                        TimeLine.FocusFrameEventArgs args = new TimeLine.FocusFrameEventArgs(TimeLine.FocusFrameEvent, frame);
                        RaiseEvent(args);
                    }
                }
            }
        }