예제 #1
0
        public static void DrawActivities(LJD.Graphics g, ViewMetrics viewMetrics, IViewEvents eventsHandler)
        {
            PushGraphicsStateForDrawingActivites(g, viewMetrics, HitTestResult.AreaCode.ActivitiesPanel);

            foreach (var a in Metrics.GetActivitiesMetrics(viewMetrics, eventsHandler))
            {
                g.FillRectangle(GetActivityBrush(viewMetrics, a.Activity.Type), a.ActivityBarRect);

                foreach (var ph in a.Phases)
                {
                    var phaseMargin = a.ActivityBarRect.Height / 3;
                    g.FillRectangle(ph.Brush, ph.X1, a.ActivityBarRect.Top + phaseMargin,
                                    Math.Max(ph.X2 - ph.X1, 2), a.ActivityBarRect.Height - phaseMargin - 2);
                }

                foreach (var ms in a.Milestones)
                {
                    g.DrawLine(viewMetrics.MilestonePen, ms.X, a.ActivityBarRect.Top, ms.X, a.ActivityBarRect.Bottom);
                }

                g.DrawRectangle(viewMetrics.ActivityBarBoundsPen, a.ActivityBarRect);

                if (a.PairedActivityConnectorBounds != null)
                {
                    var r = a.PairedActivityConnectorBounds.Value;
                    g.DrawLine(viewMetrics.ActivitiesConnectorPen, r.Left, r.Top, r.Left, r.Bottom);
                    g.DrawLine(viewMetrics.ActivitiesConnectorPen, r.Right, r.Top, r.Right, r.Bottom);
                }
            }

            g.PopState();
        }
예제 #2
0
 public static void DrawActivitiesBackground(
     LJD.Graphics g,
     ViewMetrics viewMetrics,
     IViewEvents eventsHandler
     )
 {
     PushGraphicsStateForDrawingActivites(g, viewMetrics, HitTestResult.AreaCode.ActivitiesPanel);
     foreach (var a in Metrics.GetActivitiesMetrics(viewMetrics, eventsHandler))
     {
         if (a.Activity.IsSelected)
         {
             g.FillRectangle(viewMetrics.SelectedLineBrush, a.ActivityLineRect);
         }
         else if (a.Activity.Color.HasValue)
         {
             using (var bgBrush = MakeBrush(a.Activity.Color.Value))
                 g.FillRectangle(bgBrush, a.ActivityLineRect);
         }
     }
     g.PopState();
 }
예제 #3
0
 public static CursorType GetCursor(
     Point pt,
     ViewMetrics vm,
     IViewEvents eventsHandler,
     Func <LJD.Graphics> graphicsFactory
     )
 {
     foreach (var a in Metrics.GetActivitiesMetrics(vm, eventsHandler))
     {
         bool overLink = false;
         overLink = overLink || (a.BeginTriggerLinkRect.HasValue && a.BeginTriggerLinkRect.Value.Contains(pt));
         overLink = overLink || (a.EndTriggerLinkRect.HasValue && a.EndTriggerLinkRect.Value.Contains(pt));
         overLink = overLink || a.Milestones.Any(ms => ms.Bounds.HasValue && ms.Bounds.Value.Contains(pt));
         if (overLink)
         {
             return(CursorType.Hand);
         }
     }
     using (var g = graphicsFactory())
     {
         foreach (var bmk in Metrics.GetBookmarksMetrics(g, vm, eventsHandler))
         {
             if (bmk.IsOverLink(pt))
             {
                 return(CursorType.Hand);
             }
         }
         foreach (var evt in Metrics.GetEventMetrics(g, eventsHandler, vm))
         {
             if (evt.IsOverLink(pt))
             {
                 return(CursorType.Hand);
             }
         }
     }
     return(CursorType.Default);
 }