LongoMatch.Gui.Menus.SportsPlaysMenu.PrepareMenu C# (CSharp) Méthode

PrepareMenu() protected méthode

protected PrepareMenu ( Project project, IEnumerable plays, EventType eventType, Time time, IList eventTypes, bool editableName ) : void
project Project
plays IEnumerable
eventType LongoMatch.Core.Store.EventType
time LongoMatch.Core.Store.Time
eventTypes IList
editableName bool
Résultat void
        protected override void PrepareMenu(Project project, IEnumerable<TimelineEvent> plays, EventType eventType, Time time,
										 IList<EventType> eventTypes, bool editableName)
        {
            bool isLineup = false, isSubstitution = false;

            this.plays = plays.ToList ();
            this.eventType = eventType;
            this.time = time;
            this.project = project;

            if (eventType != null) {
                string label = String.Format ("{0} in {1}", Catalog.GetString ("Add new event"), eventType.Name);
                newPlay.SetLabel (label);
                newPlay.Visible = true;
            } else {
                newPlay.Visible = false;
            }

            if (plays == null) {
                plays = new List<TimelineEvent> ();
            } else if (plays.Count () == 1) {
                isLineup = plays.FirstOrDefault () is LineupEvent;
                isSubstitution = plays.FirstOrDefault () is SubstitutionEvent;
            }

            if (isLineup || isSubstitution) {
                edit.Visible = true;
                del.Visible = isSubstitution;
                snapshot.Visible = moveCat.Visible = drawings.Visible =
                    addPLN.Visible = render.Visible = duplicate.Visible = false;
            } else {
                edit.Visible = editableName && this.plays.Count == 1;
                snapshot.Visible = this.plays.Count == 1;
                drawings.Visible = this.plays.Count == 1 && this.plays.FirstOrDefault ().Drawings.Count > 0;
                moveCat.Visible = del.Visible = addPLN.Visible = duplicate.Visible = this.plays.Any ();
            }

            MenuHelpers.FillExportToVideoFileMenu (render, project, plays, Catalog.GetString ("Export to video file"));

            if (plays.Count () > 0) {
                string label = String.Format ("{0} ({1})", Catalog.GetString ("Delete"), plays.Count ());
                del.SetLabel (label);
                label = String.Format ("{0} ({1})", Catalog.GetString ("Duplicate "), plays.Count ());
                duplicate.SetLabel (label);
            }

            if (moveCat.Visible) {
                Menu catMenu = new Menu ();
                foreach (EventType c in eventTypes) {
                    if (plays.Any (p => p.EventType == c))
                        continue;
                    var item = new MenuItem (c.Name);
                    catMenu.Append (item);
                    item.Activated += (sender, e) => {
                        App.Current.EventsBroker.Publish<MoveToEventTypeEvent> (
                            new MoveToEventTypeEvent {
                                TimelineEvents = plays.ToList (),
                                EventType = c
                            }
                        );
                    };
                }
                catMenu.ShowAll ();
                moveCat.Submenu = catMenu;
            }

            if (drawings.Visible) {
                Menu drawingsMenu = new Menu ();
                for (int i = 0; i < plays.FirstOrDefault ().Drawings.Count; i++) {
                    int index = i;
                    MenuItem drawingItem = new MenuItem (Catalog.GetString ("Drawing ") + (i + 1));
                    MenuItem editItem = new MenuItem (Catalog.GetString ("Edit"));
                    MenuItem deleteItem = new MenuItem (Catalog.GetString ("Delete"));
                    Menu drawingMenu = new Menu ();

                    drawingsMenu.Append (drawingItem);
                    drawingMenu.Append (editItem);
                    drawingMenu.Append (deleteItem);
                    editItem.Activated += (sender, e) => {
                        App.Current.EventsBroker.Publish<DrawFrameEvent> (
                            new DrawFrameEvent {
                                Play = plays.FirstOrDefault (),
                                DrawingIndex = index,
                                CamConfig = plays.FirstOrDefault ().Drawings [index].CameraConfig,
                                Current = false
                            }
                        );
                    };
                    deleteItem.Activated += (sender, e) => {
                        plays.FirstOrDefault ().Drawings.RemoveAt (index);
                        plays.FirstOrDefault ().UpdateMiniature ();
                    };
                    drawingItem.Submenu = drawingMenu;
                    drawingMenu.ShowAll ();
                }
                drawingsMenu.ShowAll ();
                drawings.Submenu = drawingsMenu;
            }

            if (!IsLineupEvent ()) {
                MenuHelpers.FillAddToPlaylistMenu (addPLN, project.Playlists, this.plays);
            }
        }