Esempio n. 1
0
 private void RemoveComponent(object sender, RoutedEventArgs e)
 {
     this.validSourceElements = new List <Type> {
         typeof(FaultTreeAndGateNode), typeof(FaultTreeOrGateNode), typeof(FaultTreeTerminalNode)
     };
     this.EditorMode = VisualEditorMode.MODE_REMOVE_CONTENT;
 }
Esempio n. 2
0
        private void PathMouseDown(object sender, MouseEventArgs e)
        {
            var edge = (Edge <FaultTreeNode>)((EdgeViewModel)((FrameworkElement)sender).DataContext).Edge;

            if (edge.Source is FaultTreeTerminalNode)
            {
                return;
            }

            FaultTreeNode node;

            switch (this.EditorMode)
            {
            case VisualEditorMode.MODE_ADD_AND_GATE:
                node = new FaultTreeAndGateNode(this.ViewModel.FaultTree.NextId());
                break;

            case VisualEditorMode.MODE_ADD_OR_GATE:
                node = new FaultTreeOrGateNode(this.ViewModel.FaultTree.NextId());
                break;

            default:
                return;
            }

            edge.Source.Childs.Add(node);
            edge.Source.Childs.Remove(edge.Destination);
            node.Childs.Add(edge.Destination);

            this.ViewModel.RaisePropertyChanged("FaultTree");
            this.EditorMode = VisualEditorMode.MODE_VIEW_ONLY;
        }
Esempio n. 3
0
 /// <summary>
 /// Parameters for mapping an IPageViewModel using an
 /// IPageViewModelBuilder implementation.
 /// </summary>
 /// <param name="pageModel">The page data to include in the view model.</param>
 /// <param name="visualEditorMode">The view mode requested by the visual editor or a default value.</param>
 public PageViewModelBuilderParameters(
     PageRenderDetails pageModel,
     VisualEditorMode visualEditorMode
     )
 {
     PageModel        = pageModel;
     VisualEditorMode = visualEditorMode;
 }
        /// <summary>
        /// Gets the publish status that should be used to query any
        /// entities that are not the primary target of the visual
        /// editor, e.g. a related entity or entities not directly associated
        /// with an entity being edited.
        /// </summary>
        /// <remarks>
        /// In most cases this would be the same for both primary and ambient
        /// entity, but in some cases it is different e.g. if the primary
        /// entity has been requested as a specific version then ambient entities
        /// cannot also be a specific version and should show the latest.
        /// </remarks>
        public static PublishStatusQuery ToAmbientEntityPublishStatusQuery(this VisualEditorMode visualEditorMode)
        {
            if (visualEditorMode == VisualEditorMode.Live)
            {
                return(PublishStatusQuery.Published);
            }

            return(PublishStatusQuery.Latest);
        }
Esempio n. 5
0
 /// <summary>
 /// Parameters for mapping an ICustomEntityPageViewModel using an
 /// IPageViewModelMapper implementation.
 /// </summary>
 /// <param name="page">The page data to include in the view model.</param>
 /// <param name="visualEditorMode">The view mode requested by the visual editor or a default value.</param>
 /// <param name="customEntityModel">he custom entity model data to use in the mapping.</param>
 public CustomEntityPageViewModelBuilderParameters(
     PageRenderDetails page,
     VisualEditorMode visualEditorMode,
     CustomEntityRenderDetails customEntityModel
     )
     : base(page, visualEditorMode)
 {
     CustomEntityModel = customEntityModel;
 }
Esempio n. 6
0
 private void AddMarkovChain(object sender, RoutedEventArgs e)
 {
     this.validSourceElements = new List <Type> {
         typeof(FaultTreeTerminalNode)
     };
     this.validDestinationElements = new List <Type> {
         typeof(FaultTreeTerminalNode)
     };
     this.EditorMode = VisualEditorMode.MODE_ADD_MARKOV_CHAIN;
 }
Esempio n. 7
0
 private void AddGateConnection(object sender, RoutedEventArgs e)
 {
     this.validSourceElements = new List <Type> {
         typeof(FaultTreeAndGateNode), typeof(FaultTreeOrGateNode)
     };
     this.validDestinationElements = new List <Type> {
         typeof(FaultTreeAndGateNode), typeof(FaultTreeOrGateNode), typeof(FaultTreeTerminalNode)
     };
     this.EditorMode = VisualEditorMode.MODE_ADD_GATE_CONNECTION;
 }
Esempio n. 8
0
 public IEditablePageViewModel MapCustomEntityModel(
     Type displayModelType,
     PageRenderDetails page,
     CustomEntityRenderDetails customEntityRenderDetails,
     VisualEditorMode siteViewerMode)
 {
     return((IEditablePageViewModel)_mapMethod
            .MakeGenericMethod(displayModelType)
            .Invoke(this, new object[] { page, customEntityRenderDetails, siteViewerMode }));
 }
Esempio n. 9
0
        public T Map <T>(PageRenderDetails page, VisualEditorMode siteViewerMode) where T : IEditablePageViewModel, IPageRoutableViewModel, new()
        {
            var vm = new T();

            vm.Page = page;
            vm.PageRoutingHelper = CreatePageRoutingHelper(page.PageId, page.PageVersionId, siteViewerMode);
            vm.IsPageEditMode    = siteViewerMode == VisualEditorMode.Edit;

            return(vm);
        }
Esempio n. 10
0
        private void AddBasicEvent(object sender, RoutedEventArgs e)
        {
            if (!this.GraphLayout.Graph.Vertices.Any())
            {
                return;
            }

            this.EditorMode          = VisualEditorMode.MODE_ADD_BASIC_EVENT;
            this.validSourceElements = new List <Type> {
                typeof(FaultTreeOrGateNode), typeof(FaultTreeAndGateNode), typeof(FaultTreeTerminalNode)
            };
        }
Esempio n. 11
0
 private void AddOrGate(object sender, RoutedEventArgs e)
 {
     if (!this.GraphLayout.Graph.Vertices.Any())
     {
         this.ViewModel.FaultTree = new FaultTree(new FaultTreeOrGateNode(0));
     }
     else
     {
         this.EditorMode          = VisualEditorMode.MODE_ADD_OR_GATE;
         this.validSourceElements = new List <Type> {
             typeof(FaultTreeOrGateNode), typeof(FaultTreeAndGateNode)
         };
     }
 }
Esempio n. 12
0
 public PageRoutingHelper(
     ICollection <PageRoute> pageRoutes,
     ICollection <PageDirectoryRoute> pageDirectoryRoutes,
     PageRoute currentPageRoute,
     VisualEditorMode visualEditorMode,
     int?currentPageVersionId
     )
 {
     PageRoutes           = pageRoutes;
     PageDirectoryRoutes  = pageDirectoryRoutes;
     CurrentPageRoute     = currentPageRoute;
     VisualEditorMode     = visualEditorMode;
     CurrentPageVersionId = currentPageVersionId;
 }
Esempio n. 13
0
 public PageRoutingHelper(
     IEnumerable <PageRoute> pageRoutes,
     IEnumerable <WebDirectoryRoute> webDirectoryRoutes,
     PageRoute currentPageRoute,
     VisualEditorMode visualEditorMode,
     int?currentPageVersionId
     )
 {
     PageRoutes           = pageRoutes;
     WebDirectoryRoutes   = webDirectoryRoutes;
     CurrentPageRoute     = currentPageRoute;
     VisualEditorMode     = visualEditorMode;
     CurrentPageVersionId = currentPageVersionId;
 }
Esempio n. 14
0
        public static PublishStatusQuery ToPublishStatusQuery(this VisualEditorMode siteViewerMode)
        {
            switch (siteViewerMode)
            {
            case VisualEditorMode.Draft:
            case VisualEditorMode.Edit:
                return(PublishStatusQuery.Draft);

            case VisualEditorMode.Any:
                return(PublishStatusQuery.Latest);

            case VisualEditorMode.SpecificVersion:
                return(PublishStatusQuery.SpecificVersion);

            default:
                return(PublishStatusQuery.Published);
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Try and find a page route for a 404 page.
        /// </summary>
        private async Task <PageRoutingInfo> TryFindNotFoundPageRoute(string path, VisualEditorMode siteViewerMode)
        {
            var notFoundQuery = new GetNotFoundPageRouteByPathQuery()
            {
                Path = path,
                IncludeUnpublished = siteViewerMode != VisualEditorMode.Live
            };
            var pageRoute = await _queryExecutor.ExecuteAsync(notFoundQuery);

            if (pageRoute == null)
            {
                return(null);
            }

            return(new PageRoutingInfo()
            {
                PageRoute = pageRoute
            });
        }
Esempio n. 16
0
        private void EditorDownGate(FrameworkElement sender)
        {
            FaultTreeNode vertex;

            switch (this.EditorMode)
            {
            case VisualEditorMode.MODE_ADD_AND_GATE:
                vertex = new FaultTreeAndGateNode(this.ViewModel.FaultTree.NextId());
                break;

            case VisualEditorMode.MODE_ADD_OR_GATE:
                vertex = new FaultTreeOrGateNode(this.ViewModel.FaultTree.NextId());
                break;

            case VisualEditorMode.MODE_ADD_BASIC_EVENT:
                FaultTreeTerminalNode node = sender.DataContext as FaultTreeTerminalNode;
                if (node != null)
                {
                    vertex = new FaultTreeTerminalNode(this.ViewModel.FaultTree.NextId(), this.ViewModel.FaultTree.NextBasicEvent());
                    this.ViewModel.FaultTree.MarkovChain.InitialDistribution[(FaultTreeTerminalNode)vertex] = 1.0;
                    this.ViewModel.FaultTree.MarkovChain[node, (FaultTreeTerminalNode)vertex] = 1.0;
                    this.ViewModel.FaultTree.MarkovChain[(FaultTreeTerminalNode)vertex, node] = 1.0;
                    this.ViewModel.RaisePropertyChanged("FaultTree");
                    this.EditorMode = VisualEditorMode.MODE_VIEW_ONLY;
                    return;
                }
                vertex = new FaultTreeTerminalNode(this.ViewModel.FaultTree.NextId(), this.ViewModel.FaultTree.NextBasicEvent());
                this.ViewModel.FaultTree.MarkovChain.InitialDistribution[(FaultTreeTerminalNode)vertex] = 1.0;
                break;

            default:
                return;
            }

            this.ViewModel.NewEdgeStart = (FaultTreeNode)sender.DataContext;
            this.ViewModel.NewEdgeEnd   = vertex;
            this.ViewModel.CreateEdge();
            this.EditorMode = VisualEditorMode.MODE_VIEW_ONLY;
        }
Esempio n. 17
0
        private CustomEntityDetailsPageViewModel <TDisplayModel> MapCustomEntityModel <TDisplayModel>(
            PageRenderDetails page,
            CustomEntityRenderDetails customEntityRenderDetails,
            VisualEditorMode siteViewerMode
            ) where TDisplayModel : ICustomEntityDetailsDisplayViewModel
        {
            var vm = Map <CustomEntityDetailsPageViewModel <TDisplayModel> >(page, siteViewerMode);

            var customModel = new CustomEntityRenderDetailsViewModel <TDisplayModel>();

            customModel.CustomEntityId        = customEntityRenderDetails.CustomEntityId;
            customModel.CustomEntityVersionId = customEntityRenderDetails.CustomEntityVersionId;
            customModel.Locale         = customEntityRenderDetails.Locale;
            customModel.Sections       = customEntityRenderDetails.Sections;
            customModel.Title          = customEntityRenderDetails.Title;
            customModel.UrlSlug        = customEntityRenderDetails.UrlSlug;
            customModel.WorkFlowStatus = customEntityRenderDetails.WorkFlowStatus;
            customModel.Model          = _customEntityDisplayModelMapper.MapDetails <TDisplayModel>(customEntityRenderDetails);

            vm.CustomEntity = customModel;

            return(vm);
        }
Esempio n. 18
0
        private PageRoutingHelper CreatePageRoutingHelper(int pageId, int pageVersionId, VisualEditorMode siteViewerMode)
        {
            var allRoutes      = _queryExecutor.GetAll <PageRoute>();
            var allDirectories = _queryExecutor.GetAll <WebDirectoryRoute>();
            var currentRoute   = allRoutes.Single(p => p.PageId == pageId);

            var router = new PageRoutingHelper(allRoutes, allDirectories, currentRoute, siteViewerMode, pageVersionId);

            return(router);
        }
Esempio n. 19
0
 private void AnalyzeClick(object sender, RoutedEventArgs e)
 {
     this.EditorMode = VisualEditorMode.MODE_ANALYZE_CLICK;
 }
Esempio n. 20
0
 public PageViewModel Map(PageRenderDetails page, VisualEditorMode siteViewerMode)
 {
     return(Map <PageViewModel>(page, siteViewerMode));
 }
Esempio n. 21
0
        /// <summary>
        /// Gets the url for a page, formatted with specific visual editor
        /// parameters. Note that this method does not validate permissions
        /// in any way, it simply formats the route correctly.
        /// </summary>
        /// <param name="route">The page to link to.</param>
        /// <param name="visualEditorMode">
        /// The mode to set the visual editor to. Note that this method cannot be
        /// used for VisualEditorMode.SpecificVersion and will throw an exception if
        /// you try. To get the url for a specific version, you need to use the overload
        /// accepting an IVersionRoute parameter.
        /// </param>
        /// <param name="isEditingCustomEntity">
        /// For custom entity pages, this option indicates whether the editing context
        /// should be the custom entity rather than the (default) page.
        /// </param>
        public string VisualEditor(
            PageRoutingInfo route,
            VisualEditorMode visualEditorMode,
            bool isEditingCustomEntity = false
            )
        {
            if (route == null)
            {
                return(string.Empty);
            }

            var baseUrl     = Page(route);
            var queryParams = new Dictionary <string, string>(2);

            switch (visualEditorMode)
            {
            case VisualEditorMode.Any:

                var latestVersion = route.GetVersionRoute(isEditingCustomEntity, PublishStatusQuery.Latest, null);

                if (latestVersion.WorkFlowStatus == WorkFlowStatus.Draft || !route.IsPublished())
                {
                    queryParams.Add(VISUAL_EDITOR_QS_MODE, VISUAL_EDITOR_QS_MODE_PREVIEW);
                }
                else
                {
                    queryParams.Add(VISUAL_EDITOR_QS_MODE, VISUAL_EDITOR_QS_MODE_LIVE);
                }
                break;

            case VisualEditorMode.Preview:
                queryParams.Add(VISUAL_EDITOR_QS_MODE, VISUAL_EDITOR_QS_MODE_PREVIEW);
                break;

            case VisualEditorMode.Edit:
                queryParams.Add(VISUAL_EDITOR_QS_MODE, VISUAL_EDITOR_QS_MODE_EDIT);
                break;

            case VisualEditorMode.Live:
                queryParams.Add(VISUAL_EDITOR_QS_MODE, VISUAL_EDITOR_QS_MODE_LIVE);
                break;

            case VisualEditorMode.SpecificVersion:
                throw new Exception($"To create a url for {nameof(VisualEditorMode)}.{nameof(VisualEditorMode.SpecificVersion)} you should use the overload that takes an {nameof(IVersionRoute)} parameter");

            default:
                throw new Exception($"{nameof(VisualEditorMode)}.{visualEditorMode} not supported by {nameof(PageRouteLibrary)}.{nameof(VisualEditor)}()");
            }

            if (isEditingCustomEntity)
            {
                queryParams.Add(VISUAL_EDITOR_QS_EDITTYPE, VISUAL_EDITOR_QS_EDITTYPE_ENTITY);
            }
            else if (route.CustomEntityRoute != null)
            {
                queryParams.Add(VISUAL_EDITOR_QS_EDITTYPE, VISUAL_EDITOR_QS_EDITTYPE_PAGE);
            }

            var url = QueryHelpers.AddQueryString(baseUrl, queryParams);

            return(url);
        }
Esempio n. 22
0
 public VisualEditorState(
     VisualEditorMode visualEditorMode
     )
 {
     VisualEditorMode = visualEditorMode;
 }