Beispiel #1
0
        private void GoUpLevel()
        {
            VariationModel model = new VariationModel(currentVariation);

            title.Text = model.Description;

            Populate(model);

            if (currentVariation == 0)
            {
                upOne.Visibility = Visibility.Hidden;
            }

            subViewPanel.Visibility = Visibility.Hidden;

            details.ShowPointPrice();
            details.HidePortions();
            details.HideGroup();

            details.Reset();

            fullViewSelected         = true;
            fullView.Background      = new SolidColorBrush(Colors.Beige);
            selectionView.Background = new SolidColorBrush(Colors.LightGray);

            SetLocationUpOne();
        }
 /// <summary>
 ///		Escribe los datos de una variación
 /// </summary>
 private void WriteVariation(int indent, int index, VariationModel variation)
 {
     // Cabecera
     Console.WriteLine(new string('\t', indent) + $"Variation {index.ToString()}");
     // Movimientos
     WriteMovements(indent + 1, variation.Movements);
 }
Beispiel #3
0
        private void ReinstateItem_Click(object sender, RoutedEventArgs e)
        {
            svc.ReinstateItem(selectedId);
            iconView.IconItemChild(selectedId).ShowIcon = false;
            iconView.HideIcon(selectedId, "REINSTATED_SELECTED.BMP");

            VariationModel model = new VariationModel(selectedId);

            svc.AddUpdate("REINSTATE_VARIATION," + selectedId);
        }
Beispiel #4
0
        private void DownItem_Click(object sender, RoutedEventArgs e)
        {
            VariationModel movingModel = (VariationModel)iconView.SelectedItem.Child;
            VariationModel otherModel  = (VariationModel)iconView.Items.Values.Where(i => i.Child.Position == movingModel.Position + 1).FirstOrDefault().Child;

            svc.SwapVariationPositions(movingModel, otherModel);

            VariationModel model = new VariationModel(parent, false);

            Populate(model);
        }
        /// <summary>
        ///		Crea una variación
        /// </summary>
        private VariationModel CreateVariation(PieceBaseModel.PieceColor actualColor, PieceBaseModelCollection previousPieces, RAVEntry rav)
        {
            VariationModel variation = new VariationModel();

            // Asigna las piezas
            variation.Setup = CreateBoardSetup(actualColor, previousPieces);
            // Interpreta la lista de movimiento
            variation.Movements.AddRange(ParseMovements(variation, rav.MoveText));
            // Devuelve la variación
            return(variation);
        }
Beispiel #6
0
        private void AddVariation_Click(object sender, RoutedEventArgs e)
        {
            int position = iconView.Items.Count + 1;

            int newId = svc.AddNewVariation(parent, "New Variation", "New Variation", position, 1);

            svc.AddUpdate("ADD_VARIATION," + newId + "," + parent + ",New Variation,New Variation,0,0,0," + position);

            VariationModel model = new VariationModel(parent, false);

            Populate(model);
        }
Beispiel #7
0
        private static VariationModel[] CopyVariations(IReadOnlyList <VariationModel> variationModels)
        {
            var variations = new VariationModel[variationModels.Count];

            for (var i = 0; i < variations.Length; i++)
            {
                variations[i] = variationModels[i].Copy();
                variations[i].Init();
            }

            return(variations);
        }
Beispiel #8
0
        private void AddComponentsItem_Click(object sender, RoutedEventArgs e)
        {
            Populate(new ComponentsModel(selectedId, parent), new ComponentsModel(selectedId));

            VariationModel model = new VariationModel(parent, false);

            title.Text = model.Description;

            details.HidePointPrice();
            upOne.Visibility        = Visibility.Visible;
            subViewPanel.Visibility = Visibility.Visible;
        }
Beispiel #9
0
        private void AddVariationsItem_Click(object sender, RoutedEventArgs e)
        {
            int newId = svc.AddNewVariation(selectedId, "New Variation", "New Variation", 1, 1);

            svc.AddUpdate("ADD_VARIATION," + newId + "," + selectedId + ",New Variation,New Variation,0,0,0,1");

            VariationModel model = new VariationModel(selectedId, false);

            Populate(model);

            title.Text           = model.Description;
            currentLocation.Text = currentLocation.Text + "/" + model.Description;
            upOne.Visibility     = Visibility.Visible;
        }
Beispiel #10
0
        /// <summary>
        ///		Carga en la lista una variación de movimientos
        /// </summary>
        private void LoadVariationMovements(VariationModel variation, int movementIndex, int movementLineIndex, int variationIndex)
        {
            MovementFigureDoubleViewModel          lastMovement          = null;
            MovementFigureVariationDoubleViewModel lastRecursiveMovement = null;

            foreach (MovementBaseModel movement in variation.Movements)
            {
                switch (movement)
                {
                case MovementFigureModel move:
                    // Añade a la lista un movimiento real o un movimiento recursivo
                    if (variationIndex == 0)
                    {
                        // Añade el movimiento a la lista de movimientos de piezas (sin comentarios)
                        FigureMovements.Add(move);
                        // Crea el movimiento para la lista
                        lastMovement          = CreateRealMovement(lastMovement, move, movementIndex, movementLineIndex);
                        lastRecursiveMovement = null;
                    }
                    else if (PgnGameViewModel.ShowVariations)
                    {
                        lastRecursiveMovement = CreateRecursiveMovement(lastRecursiveMovement, move, movementIndex, movementLineIndex, variationIndex);
                        lastMovement          = null;
                    }
                    // Incrementa los índices de movimientos
                    movementIndex++;
                    if (move.Color == Bau.Libraries.LibChessGame.Board.Pieces.PieceBaseModel.PieceColor.Black)
                    {
                        movementLineIndex++;
                    }
                    break;

                case MovementRemarksModel move:
                    Movements.Add(new MovementRemarkViewModel(move));
                    lastMovement          = null;
                    lastRecursiveMovement = null;
                    break;

                case MovementGameEndModel move:
                    Movements.Add(new MovementGameEndViewModel(move));
                    lastMovement          = null;
                    lastRecursiveMovement = null;
                    break;
                }
            }
        }
Beispiel #11
0
        private void IconView_ItemDoubleClicked(object sender, ItemDoubleClickedEventArgs <ItemModelBase> e)
        {
            ItemModelBase model = null;

            if (e.Child is VariationModel)
            {
                model = new VariationModel(e.Child.Id);
            }
            else if (e.Child is ComponentModel)
            {
                details.Reset();
                return;
            }

            if (model.HasChildren && model.Children[0] is VariationModel)
            {
                details.ShowPointPrice();
                details.HidePortions();
                details.HideGroup();

                Populate(model);
                title.Text           = e.Child.Description;
                currentLocation.Text = currentLocation.Text + "/" + e.Child.Description;
            }
            else if (model.HasChildren)
            {
                details.HidePointPrice();
                details.ShowPortions();
                details.ShowGroup();

                subViewPanel.Visibility = Visibility.Visible;

                Populate(new ComponentsModel(e.Child.Id, e.Child.ParentId), new ComponentsModel(e.Child.Id));
                title.Text           = e.Child.Description;
                currentLocation.Text = currentLocation.Text + "/" + e.Child.Description;
            }

            if (currentVariation != 0)
            {
                upOne.Visibility = Visibility.Visible;
            }

            details.Reset();
        }
Beispiel #12
0
        private void DeleteItem_Click(object sender, RoutedEventArgs e)
        {
            MessageBoxResult result = MessageBox.Show("Are you absolutely sure you wish to delete this Variation?", "Are you sure?", MessageBoxButton.YesNo);

            if (result == MessageBoxResult.Yes)
            {
                DeleteVariation();

                VariationModel model = new VariationModel(parent, false);

                if (!model.HasChildren && parent != 1)
                {
                    GoUpLevel();
                }
                else
                {
                    Populate(model);
                }
            }
        }
Beispiel #13
0
 /// <summary>
 ///		Carga los movimientos de la variación
 /// </summary>
 internal void LoadMovements(VariationModel variation)
 {
     // Limpia los movimientos
     Movements.Clear();
     FigureMovements.Clear();
     // Inicializa el tablero
     GameBoard = new GameBoardModel(variation);
     GameBoard.Reset();
     // Carga los movimientos
     if (variation != null)
     {
         LoadVariationMovements(variation, 1, 1, 0);
     }
     // Añade un comentario si no había ningún movimiento
     if (Movements.Count == 0)
     {
         Movements.Add(new MovementRemarkViewModel(new MovementRemarksModel("No hay ningún movimiento en este juego")));
     }
     // Inicializa los movimientos
     _actualMovementIndex = 0;
 }
Beispiel #14
0
        private void IconView_ViewRightClicked(object sender, IconViewRightClickedEventArgs e)
        {
            if (showingMenu)
            {
                showingMenu = false;
                return;
            }

            FrameworkElement thisControl = (FrameworkElement)sender;
            VariationModel   model       = new VariationModel(parent);

            if (model.HasChildren && model.Children[0] is VariationModel)
            {
                MenuItem addVariation = new MenuItem();
                addVariation.Header = "Add Variation";
                addVariation.Click += AddVariation_Click;

                thisControl.ContextMenu = new ContextMenu();
                thisControl.ContextMenu.Items.Add(addVariation);
                thisControl.ContextMenu.IsOpen = true;
            }
        }
        /// <summary>
        ///		Convierte una variación
        /// </summary>
        private MovementVariationModel ConvertVariation(VariationModel variation, MovementBaseModel parent)
        {
            MovementVariationModel movementVariation = new MovementVariationModel(parent);
            SquareModel            board             = Board.Clone();

            // Ajusta el movimiento al color de inicio de la variación
            board.Parameters.IsWhiteMove = variation.Movements[0].Turn.Type == TurnModel.TurnType.White;
            // Presenta el tablero
            //#if DEBUG
            //	System.Diagnostics.Debug.WriteLine("Board for variation:");
            //	System.Diagnostics.Debug.WriteLine(board.GetText());
            //	System.Diagnostics.Debug.WriteLine(new string('-', 80));
            //#endif
            // Convierte los movimientos
            movementVariation.Movements.AddRange(new MovementConversor(board).Convert(variation.Movements));
            // Presenta el tablero real
            //#if DEBUG
            //	System.Diagnostics.Debug.WriteLine("Board after variation:");
            //	System.Diagnostics.Debug.WriteLine(Board.GetText());
            //	System.Diagnostics.Debug.WriteLine(new string('-', 80));
            //#endif
            // Devuelve la variación
            return(movementVariation);
        }
Beispiel #16
0
        /// <summary>
        ///		Lee los movimientos
        /// </summary>
        private SentenceBaseModel ReadMovements(IEnumerator <SentenceBaseModel> sentenceEnumerator, SentenceBaseModel previousSentence,
                                                List <BaseMovementModel> movements)
        {
            SentenceBaseModel sentence     = previousSentence;
            BaseMovementModel lastMovement = null;
            TurnModel         lastTurn     = null;

            // Añade los movimientos
            do
            {
                // Trata la sentencia
                switch (sentence)
                {
                case SentenceTurnNumberModel sentenceTurn:
                    lastMovement = null;
                    lastTurn     = new TurnModel(sentenceTurn.Content, TurnModel.TurnType.White);
                    break;

                case SentenceTurnPlayModel sentencePlay:
                    if (lastTurn == null)
                    {
                        sentence = new SentenceErrorModel($"There is not turn to add the play {sentencePlay.Content}");
                    }
                    else
                    {
                        // Crea el movimiento
                        lastMovement = new PieceMovementModel(lastTurn, sentencePlay.Content);
                        // Añade el movimiento
                        movements.Add(lastMovement);
                    }
                    break;

                case SentenceTurnResultModel sentenceResult:
                    if (lastTurn == null)
                    {
                        sentence = new SentenceErrorModel($"There is not turn to add the result {sentenceResult.Content}");
                    }
                    else
                    {
                        // Crea el movimiento
                        lastMovement = new ResultMovementModel(lastTurn, sentence.Content);
                        // Añade el movimiento
                        movements.Add(lastMovement);
                    }
                    break;

                case SentenceTurnInformationModel sentenceInformation:
                    if (lastMovement == null)
                    {
                        sentence = new SentenceErrorModel($"There is not movement to add the information {sentenceInformation.Content}");
                    }
                    else
                    {
                        lastMovement.Info.Add(new InfoMovementModel(sentence.Content));
                    }
                    break;

                case SentenceCommentModel sentenceComment:
                    if (lastMovement == null)
                    {
                        sentence = new SentenceErrorModel($"There is not sentence to add the comment {sentenceComment.Content}");
                    }
                    else
                    {
                        lastMovement.Comments.Add(sentenceComment.Content);
                    }
                    break;

                case SentenceTurnStartVariationModel sentenceVariation:
                    if (lastMovement == null)
                    {
                        sentence = new SentenceErrorModel("There is not sentence to add a variation");
                    }
                    else
                    {
                        VariationModel variation = new VariationModel(lastMovement);

                        // Limpia esta sentencia del enumerado
                        sentence = GetNextSentence(sentenceEnumerator);
                        // Añade los comentarios y la información a la variación
                        while (sentence is SentenceTurnInformationModel || sentence is SentenceCommentModel)
                        {
                            // Añade la información de la sentencia
                            switch (sentence)
                            {
                            case SentenceTurnInformationModel sentenceInfo:
                                variation.Info.Add(new InfoMovementModel(sentenceInfo.Content));
                                break;

                            case SentenceCommentModel sentenceComment:
                                variation.Comments.Add(sentenceComment.Content);
                                break;
                            }
                            // Pasa a la siguiente sentencia
                            sentence = GetNextSentence(sentenceEnumerator);
                        }
                        // Lee los movimientos de la variación
                        sentence = ReadMovements(sentenceEnumerator, sentence, variation.Movements);
                        // Añade la variación a la colección
                        if (variation.Movements.Count > 0)
                        {
                            lastMovement.Variations.Add(variation);
                        }
                        // Pasa a la siguiente sentencia
                        if (!(sentence is SentenceTurnEndVariationModel))
                        {
                            sentence = new SentenceErrorModel("Can't find the end variation sentence");
                        }
                    }
                    break;
                }
                // Pasa a la siguiente sentencia
                if (!(sentence is SentenceErrorModel))
                {
                    sentence = GetNextSentence(sentenceEnumerator);
                }
            }while (!(sentence is SentenceEndModel) && !(sentence is SentenceErrorModel) && !(sentence is SentenceTagModel) && !(sentence is SentenceTurnEndVariationModel));
            // Devuelve la última sentencia leída
            return(sentence);
        }
        /// <summary>
        ///		Interpreta los movimientos
        /// </summary>
        private MovementModelCollection ParseMovements(VariationModel variation, MoveTextEntryList moveEntryList)
        {
            MovementModelCollection movements = new MovementModelCollection();

            PieceBaseModel.PieceColor actualColor    = PieceBaseModel.PieceColor.White;
            PieceBaseModelCollection  previousPieces = new PieceBaseModelCollection();

            // Inicializa el tablero
            variation.GameBoard.Reset();
            // Cambia el color inicial
            if (variation.Setup.HasSetup && !variation.Setup.IsWhiteMove)
            {
                actualColor = PieceBaseModel.PieceColor.Black;
            }
            // Interpreta la lista de movimientos
            try
            {
                foreach (MoveTextEntry moveEntry in moveEntryList)
                {
                    switch (moveEntry)
                    {
                    case RAVEntry rav:
                        MovementFigureModel lastMovement = movements.SearchLastPieceMovement();

                        if (lastMovement != null)
                        {
                            lastMovement.Variation = CreateVariation(actualColor, previousPieces, rav);
                        }
                        break;

                    case NAGEntry nag:
                        System.Diagnostics.Debug.WriteLine(moveEntry.GetType().ToString());
                        break;

                    case CommentEntry comment:
                        movements.Add(new MovementRemarksModel(comment.Comment));
                        break;

                    case MovePairEntry movement:
                        // Añade el movimiento de blancas
                        movements.Add(ParseMovement(variation.GameBoard, actualColor, (moveEntry as MovePairEntry).White));
                        actualColor = GetNextColor(actualColor);
                        // Clona la lista de piezas hasta el movimiento anterior
                        previousPieces = variation.GameBoard.Pieces.Clone();
                        // Añade el movimiento de negras
                        movements.Add(ParseMovement(variation.GameBoard, actualColor, (moveEntry as MovePairEntry).Black));
                        actualColor = GetNextColor(actualColor);
                        break;

                    case HalfMoveEntry movement:
                        // Clona la lista de piezas hasta el movimiento anterior
                        previousPieces = variation.GameBoard.Pieces.Clone();
                        // Añade el movimiento actual
                        movements.Add(ParseMovement(variation.GameBoard, actualColor, (moveEntry as HalfMoveEntry).Move));
                        actualColor = GetNextColor(actualColor);
                        break;

                    case GameEndEntry movement:
                        movements.Add(new MovementGameEndModel(ConvertResult(movement.Result)));
                        break;

                    default:
                        System.Diagnostics.Debug.WriteLine(moveEntry.GetType().ToString());
                        break;
                    }
                }
            }
            catch (Exception exception)
            {
                variation.ParseError = exception.Message;
            }
            // Devuelve la colección de movimientos
            return(movements);
        }
Beispiel #18
0
        private void SelectItem(ItemModelBase child)
        {
            int parentType;

            selectedId = child.Id;

            ItemModelBase model;

            if (child is VariationModel)
            {
                details.Title = "Variation";
                parentType    = 0;
                model         = new VariationModel(child.Id);
                showPoints    = true;
            }
            else
            {
                details.Title = "Component";
                parentType    = 1;

                bool found = false;
                model = svc.GetComponentModel(parent, child.Id, out found);

                if (found)
                {
                    details.EnablePoints();
                    details.EnableGroup();
                    details.EnablePortions();

                    details.Points   = ((ComponentModel)model).Points;
                    details.Portions = ((ComponentModel)model).Portions;
                    details.Group    = ((ComponentModel)model).Group;

                    details.PointPrice = 0;
                    showPoints         = true;
                }
                else
                {
                    details.DisablePoints();
                    details.DisableGroup();
                    details.Group = 0;
                    details.DisablePortions();
                    details.Portions = 0;

                    showPoints = false;
                }
            }

            details.ItemName    = model.Description;
            details.DisplayName = model.DisplayName;
            details.Price       = model.Price;

            if (model is VariationModel)
            {
                VariationModel thisModel = (VariationModel)model;
                details.Points     = thisModel.Points;
                details.PointPrice = thisModel.PointPrice;
                details.EnablePoints();
                details.VAT = thisModel.VATStatus;
                details.EnableVAT();
                showPoints = true;
            }

            details.Set(child.Id, parentType, showPoints);
            details.ParentId = parent;
        }
Beispiel #19
0
        private void DeleteVariation()
        {
            VariationModel model = new VariationModel(selectedId, true);

            svc.DeleteVariation(model);
        }
Beispiel #20
0
        private void IconView_ItemRightClicked(object sender, ItemRightClickedEventArgs <ItemModelBase> e)
        {
            thisControl             = (FrameworkElement)sender;
            thisControl.ContextMenu = null;

            if (e.Child is VariationModel)
            {
                thisControl.ContextMenu = new ContextMenu();

                VariationModel model = new VariationModel(e.Id);

                if (!model.ShowIcon)
                {
                    MenuItem cutItem = new MenuItem();
                    cutItem.Header = "Cut";
                    cutItem.Icon   = new Image
                    {
                        Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/CUT.bmp", System.UriKind.Absolute))
                    };
                    cutItem.Click += CutItem_Click;

                    thisControl.ContextMenu.Items.Add(cutItem);

                    MenuItem copyItem = new MenuItem();
                    copyItem.Header = "Copy";
                    copyItem.Icon   = new Image
                    {
                        Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COPY.bmp", System.UriKind.Absolute))
                    };
                    copyItem.Click += CopyItem_Click;

                    thisControl.ContextMenu.Items.Add(copyItem);

                    MenuItem removeItem = new MenuItem();
                    removeItem.Header = "Remove";
                    removeItem.Icon   = new Image
                    {
                        Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/REMOVE.bmp", System.UriKind.Absolute))
                    };
                    removeItem.Click += RemoveItem_Click;

                    thisControl.ContextMenu.Items.Add(removeItem);

                    MenuItem deleteItem = new MenuItem();
                    deleteItem.Header = "Delete";
                    deleteItem.Icon   = new Image
                    {
                        Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/DELETE.bmp", System.UriKind.Absolute))
                    };
                    deleteItem.Click += DeleteItem_Click;

                    thisControl.ContextMenu.Items.Add(deleteItem);

                    bool     shownSeperator = false;
                    MenuItem upItem         = new MenuItem();
                    MenuItem downItem       = new MenuItem();

                    if (model.Position > 1)
                    {
                        Separator sep = new Separator();

                        shownSeperator = true;
                        thisControl.ContextMenu.Items.Add(sep);

                        upItem.Header = "Move Variation Up";
                        upItem.Icon   = new Image
                        {
                            Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COMPONENT_UP.bmp", System.UriKind.Absolute))
                        };
                        upItem.Click += UpItem_Click;

                        thisControl.ContextMenu.Items.Add(upItem);
                    }

                    if (model.Position < iconView.Items.Count)
                    {
                        if (!shownSeperator)
                        {
                            Separator sep = new Separator();

                            shownSeperator = true;
                            thisControl.ContextMenu.Items.Add(sep);
                        }

                        downItem.Header = "Move Variation Down";
                        downItem.Icon   = new Image
                        {
                            Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COMPONENT_DOWN.bmp", System.UriKind.Absolute))
                        };
                        downItem.Click += DownItem_Click;

                        thisControl.ContextMenu.Items.Add(downItem);
                    }
                }
                else
                {
                    MenuItem reinstateItem = new MenuItem();
                    reinstateItem.Header = "Reinstate";
                    reinstateItem.Icon   = new Image
                    {
                        Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/CUT.bmp", System.UriKind.Absolute))
                    };
                    reinstateItem.Click += ReinstateItem_Click;

                    thisControl.ContextMenu.Items.Add(reinstateItem);
                }

                if (!model.HasChildren)
                {
                    if (thisControl.ContextMenu == null)
                    {
                        thisControl.ContextMenu = new ContextMenu();
                    }

                    Separator separator = new Separator();
                    thisControl.ContextMenu.Items.Add(separator);

                    MenuItem addVariationsItem = new MenuItem();
                    addVariationsItem.Header = "Add Layer Of Variations";
                    addVariationsItem.Icon   = new Image
                    {
                        Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/NEW.bmp", System.UriKind.Absolute))
                    };
                    addVariationsItem.Click += AddVariationsItem_Click;

                    thisControl.ContextMenu.Items.Add(addVariationsItem);

                    MenuItem addComponentsItem = new MenuItem();
                    addComponentsItem.Header = "Add Layer Of Components";
                    addComponentsItem.Icon   = new Image
                    {
                        Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/NEW.bmp", System.UriKind.Absolute))
                    };
                    addComponentsItem.Click += AddComponentsItem_Click;

                    thisControl.ContextMenu.Items.Add(addComponentsItem);
                }
            }
            else
            {
                if (!fullViewSelected && iconView.Items.Count > 1)
                {
                    thisControl.ContextMenu = new ContextMenu();

                    ComponentModel thisItem = (ComponentModel)iconView.SelectedItem.Child;

                    if (thisItem.Position > 1)
                    {
                        MenuItem upComponentsItem = new MenuItem();
                        upComponentsItem.Header = "Move Component Up";
                        upComponentsItem.Icon   = new Image
                        {
                            Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COMPONENT_UP.bmp", System.UriKind.Absolute))
                        };
                        upComponentsItem.Click += UpComponentsItem_Click;

                        thisControl.ContextMenu.Items.Add(upComponentsItem);
                    }

                    if (thisItem.Position < iconView.Items.Count)
                    {
                        MenuItem downComponentsItem = new MenuItem();
                        downComponentsItem.Header = "Move Component Down";
                        downComponentsItem.Icon   = new Image
                        {
                            Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COMPONENT_DOWN.bmp", System.UriKind.Absolute))
                        };
                        downComponentsItem.Click += DownComponentsItem_Click;

                        thisControl.ContextMenu.Items.Add(downComponentsItem);
                    }
                }
                else
                {
                    return;
                }
            }

            showingMenu = true;
            thisControl.ContextMenu.IsOpen = true;
        }
        public void RehydrateOrderItem(OrderItemModel model)
        {
            currentOrderItemId     = model.Id;
            quantityButton.Enabled = false;

            positions.Clear();
            components.Clear();

            variationId = model.VariationId;

            FragmentRoute route = svc.SelectVariation(model.VariationId);

            if (route == FragmentRoute.Components)
            {
                foreach (OrderItemComponentModel component in model.ComponentModels)
                {
                    components.Add(component.ComponentId, component);

                    if (component.HasComponents)
                    {
                        editedComponents.Add(component);
                    }
                }

                positions.Add(new VariationPosition()
                {
                    PosType = PositionType.Components, Id = model.VariationId
                });
            }

            VariationModel newModel = new VariationModel(model.VariationId);
            int            parentId = newModel.ParentId;

            while (newModel.ParentId != 0)
            {
                positions.Insert(0, new VariationPosition()
                {
                    PosType = PositionType.Variations, Id = newModel.ParentId
                });
                newModel = new VariationModel(newModel.ParentId);
            }

            thisPosition = positions.Count - 1;

            if (route == FragmentRoute.Components)
            {
                DisplayComponents(model.VariationId, true, ComponentListMode.Variation);
            }
            else
            {
                confirmButton.Visibility = ViewStates.Visible;
                DisplayVariations(parentId);
            }

            currentDiscountId = model.DiscountId;

            DiscountModel discountModel = svc.GetDiscountModel(currentDiscountId);

            discountText.Text = discountModel.Description;

            currentInOutId = model.InOutStatus;

            if (currentInOutId == 1)
            {
                inOutText.Text = "Eat In";
            }
            else
            {
                inOutText.Text = "Take Away";
            }

            Show();
        }
 /// <summary>
 ///		Carga los datos de un juego
 /// </summary>
 internal MovementModelCollection Parse(VariationModel variation, Game game)
 {
     return(ParseMovements(variation, game.MoveText));
 }