Ejemplo n.º 1
0
        private void buttonOk_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (listBoxEnabled.Items.Count == 0)
                {
                    Dialog.ShowErrorDialog(SilverlightVisualDesigners.Properties.Resources.Error, SilverlightVisualDesigners.Properties.Resources.NoMenuItems, this.gridLayautRoot);
                    return;
                }

                // Verificar si el MenuForm tiene título.
                if (String.IsNullOrEmpty(textBoxTitle.Text))
                {
                    Dialog.ShowErrorDialog(SilverlightVisualDesigners.Properties.Resources.Error, SilverlightVisualDesigners.Properties.Resources.TitleFormEmpty, this.gridLayautRoot);
                    return;
                }

                // Cambiar el título del MenuForm.
                menuFormSilverlight.ChangeTitle(textBoxTitle.Text.Trim());

                // Eliminar los ítems viejos eliminados si el usuario está editando
                // el Menuform.
                foreach (MenuItemSilverlight item in menuItemsDeleted.ToArray())
                {
                    menuFormSilverlight.RemoveItem(item);
                }

                // Busca los ítems editados y actualiza los datos.
                foreach (MenuItemSilverlight item in menuFormSilverlight.MenuItemsSilverlight)
                {
                    if (menuItemsChanged.ContainsKey(item))
                    {
                        FormMenuItem tempFormMenuItem = menuItemsChanged[item];
                        item.Text     = tempFormMenuItem.Text;
                        item.HelpText = tempFormMenuItem.HelpText;
                        // Remover de la lista para no agregarlo en el siguiente foreach.
                        listBoxEnabled.Items.Remove(tempFormMenuItem);
                    }
                }

                // Para cada ítem en listBoxEnable que no haya sido creado, crear un nuevo
                // FormMenuItem y añadirlo al menú.
                foreach (FormMenuItem formMenuItem in listBoxEnabled.Items)
                {
                    MenuItemSilverlight menuItemSilverlightFinded = menuFormSilverlight.FindMenuItemSilverlight(formMenuItem);
                    // Si el formMenuItem es nuevo, crearlo y añadirlo al menú.
                    if (menuItemSilverlightFinded == null)
                    {
                        formMenuItem.Parent = this.menuFormSilverlight.MenuForm;
                        MenuItemSilverlight newMenuItemSilverlight = new MenuItemSilverlight(formMenuItem);
                        newMenuItemSilverlight.MenuParent = this.menuFormSilverlight;
                        this.menuFormSilverlight.AddItem(newMenuItemSilverlight);
                    }

                    int indexFormMenuItem = listBoxEnabled.Items.IndexOf(formMenuItem);
                    int indexMenuItemSilverlightFinded = menuFormSilverlight.MenuItemsSilverlight.IndexOf(menuItemSilverlightFinded);

                    // Si el formMenuItem ha cambiado de posición en el menú, reordenarlo
                    // también en el menú.
                    if (indexMenuItemSilverlightFinded != -1 && indexFormMenuItem != indexMenuItemSilverlightFinded)
                    {
                        MenuItemSilverlight menuItemToPosicionate = menuFormSilverlight.MenuItemsSilverlight[indexMenuItemSilverlightFinded];
                        menuFormSilverlight.MenuItemsSilverlight.Remove(menuItemToPosicionate);
                        menuFormSilverlight.MenuItemsSilverlight.Insert(indexFormMenuItem, menuItemToPosicionate);
                    }
                }

                // Reordenar el ítem para actualizar la visualización.
                menuFormSilverlight.ReorderItems();

                if (Closed != null)
                {
                    Closed(this, e);
                }
            }
            catch (NullReferenceException error)
            {
                Dialog.ShowErrorDialog(SilverlightVisualDesigners.Properties.Resources.UnhandledError, error.Message, this.gridLayautRoot);
            }
        }