private ViewResultBase EncapsulateView(ControllerBase controller, ModifiableEntity entity, string prefix, VisualConstructStyle preferredStyle, string partialViewName, bool? readOnly, bool showOperations, bool? saveProtected)
        {
            Entity ident = entity as Entity;

            if (ident == null)
                throw new InvalidOperationException("Visual Constructor doesn't work with EmbeddedEntities");


            switch (preferredStyle)
            {
                case VisualConstructStyle.PopupView:
                    return controller.PopupView(ident, new PopupViewOptions(prefix)
                    {
                        PartialViewName = partialViewName,
                        ReadOnly = readOnly,
                        SaveProtected = saveProtected,
                        ShowOperations = showOperations
                    });
                case VisualConstructStyle.PopupNavigate:
                    return controller.PopupNavigate(ident, new PopupNavigateOptions(prefix)
                    {
                        PartialViewName = partialViewName,
                        ReadOnly = readOnly,
                        ShowOperations = showOperations
                    });
                case VisualConstructStyle.PartialView:
                    return controller.PartialView(ident, prefix, partialViewName);
                case VisualConstructStyle.View:
                    return controller.NormalPage(ident, new NavigateOptions { PartialViewName = partialViewName });
                default:
                    throw new InvalidOperationException();
            }
        }
        private ViewResultBase EncapsulateView(ControllerBase controller, ModifiableEntity entity, string prefix, VisualConstructStyle preferredStyle, string partialViewName, bool?readOnly, bool showOperations, bool?saveProtected)
        {
            Entity ident = entity as Entity;

            if (ident == null)
            {
                throw new InvalidOperationException("Visual Constructor doesn't work with EmbeddedEntities");
            }


            switch (preferredStyle)
            {
            case VisualConstructStyle.PopupView:
                return(controller.PopupView(ident, new PopupViewOptions(prefix)
                {
                    PartialViewName = partialViewName,
                    ReadOnly = readOnly,
                    RequiresSaveOperation = saveProtected,
                    ShowOperations = showOperations
                }));

            case VisualConstructStyle.PopupNavigate:
                return(controller.PopupNavigate(ident, new PopupNavigateOptions(prefix)
                {
                    PartialViewName = partialViewName,
                    ReadOnly = readOnly,
                    ShowOperations = showOperations
                }));

            case VisualConstructStyle.PartialView:
                return(controller.PartialView(ident, prefix, partialViewName));

            case VisualConstructStyle.View:
                return(controller.NormalPage(ident, new NavigateOptions {
                    PartialViewName = partialViewName
                }));

            default:
                throw new InvalidOperationException();
            }
        }