protected override void OnInitialized()
        {
            base.OnInitialized();

            var compositeMapNavigatorService = Container.Resolve <CompositeMapNavigatorService>();


            compositeMapNavigatorService.RegisterItem("Cardio", MapItemBuilder.
                                                      CreateDefaultBuilder("Cardio").
                                                      WithImagePackIcon(PackIconKind.Heart).
                                                      WithChild(new Collection <MapItem> {
                compositeMapNavigatorService.RegisterItem("CardioSignal", MapItemBuilder.
                                                          CreateDefaultBuilder("Signal").
                                                          WithToolBars(new[] { typeof(ToolBarView) }).
                                                          WithView(typeof(Content1View)).
                                                          WithImagePackIcon(PackIconKind.Signal)),
                compositeMapNavigatorService.RegisterItem("CardioAnalysis", MapItemBuilder.
                                                          CreateDefaultBuilder("Analysis").
                                                          WithImagePackIcon(PackIconKind.Analog).
                                                          WithExtraView(new Dictionary <string, IEnumerable <Type> > {
                    { "PopupToolBarRegion", new[] { typeof(ToolView) } }
                }).
                                                          WithView(typeof(Content2View)))
            }));
        }
        public MapItem RegisterItem(string name, MapItemBuilder builder, string parentName = "")
        {
            if (!Application.Current.Dispatcher.CheckAccess())
            {
                return(Application.Current.Dispatcher.Invoke(() => RegisterItem(name, builder, parentName)));
            }
            if (_itemsTagDictionary.ContainsKey(name))
            {
                throw new ArgumentException();
            }
            ObservableCollection <MapItem> observableCollection;

            if (parentName != string.Empty)
            {
                if (!_itemsTagDictionary.TryGetValue(parentName, out _selectedItem))
                {
                    throw new ArgumentException("ParentNotFound", nameof(parentName));
                }
                if (_selectedItem is not CompositeMapItem item)
                {
                    // decorate MapItem with CompositeMapItem
                    var parentItem = new CompositeMapItem(_itemsTagDictionary[parentName]);
                    // change old MapItem with new CompositeMapItem in TreeList
                    _itemsTagDictionary[parentName] = parentItem;
                    if (_rootItemList.Contains(_selectedItem))
                    {
                        _rootItemList.Remove(_selectedItem);
                        _rootItemList.Add(parentItem);
                    }

                    item = parentItem;
                }

                observableCollection = item.ChildList;
            }
            else
            {
                observableCollection = _rootItemList;
            }
            var mapItem = builder.Build();

            _itemsTagDictionary.Add(name, mapItem);
            var viewType = mapItem.GetViewType();

            if (viewType?.FullName != null)
            {
                _itemsViewDictionary.Add(viewType.FullName, mapItem);
            }
            observableCollection.Add(mapItem);
            if (mapItem is CompositeMapItem compositeItem)
            {
                foreach (var item in compositeItem.ChildList)
                {
                    _rootItemList.Remove(item);
                }
            }
            return(mapItem);
        }
Exemple #3
0
 public static MapItemBuilder WithImageSvgPath(this MapItemBuilder mapItemBuilder, Path imageSvgPath)
 {
     if (mapItemBuilder.SetupActions.Keys.Contains(1))
     {
         throw new NotSupportedException("Multiple Image for Map Item not Support");
     }
     mapItemBuilder.SetupActions.Add(1, item => new HasImageSvgPathMapItem(item, imageSvgPath));
     return(mapItemBuilder);
 }
Exemple #4
0
 public static MapItemBuilder WithImageUiFontPath(this MapItemBuilder mapItemBuilder, char character, FontFamily font)
 {
     if (mapItemBuilder.SetupActions.Keys.Contains(1))
     {
         throw new NotSupportedException("Multiple Image for Map Item not Support");
     }
     mapItemBuilder.SetupActions.Add(1, item => new HasImageUiFontMapItem(item, character, font));
     return(mapItemBuilder);
 }
Exemple #5
0
 public static MapItemBuilder WithNavigationParameters(this MapItemBuilder mapItemBuilder, NavigationParameters navigationParameters)
 {
     if (mapItemBuilder.SetupActions.Keys.Contains(400))
     {
         throw new Exception("This Set more than One time");
     }
     mapItemBuilder.SetupActions.Add(400, item => new HasNavigationParameterMapItem(item, navigationParameters));
     return(mapItemBuilder);
 }
        public void OnInitialized(IContainerProvider containerProvider)
        {
            var compositeMapNavigatorService = containerProvider.Resolve <CompositeMapNavigatorService>();

            if (!compositeMapNavigatorService.TryGetItemByName("Config", out _))
            {
                compositeMapNavigatorService.RegisterItem("Config", MapItemBuilder
                                                          .CreateDefaultBuilder("Config")
                                                          .WithImagePackIcon(PackIconKind.BoxView));
            }
            compositeMapNavigatorService.RegisterItem("Config\\GPS", MapItemBuilder
                                                      .CreateDefaultBuilder("GPS")
                                                      .WithImagePackIcon(PackIconKind.CrosshairsGps)
                                                      .WithChild(new Collection <MapItem>
            {
                compositeMapNavigatorService.RegisterItem("Config\\GPS\\Map", MapItemBuilder
                                                          .CreateDefaultBuilder("Map")
                                                          .WithImagePackIcon(PackIconKind.MapMarker)
                                                          .WithToolBars(new[] { typeof(GpsServiceToolBarView) })
                                                          .WithView(typeof(MapView))
                                                          .WithExtraView(new Dictionary <string, IEnumerable <Type> >
                {
                    {
                        "PopupToolBarRegion", new[]
                        {
                            typeof(CachedChannelView),
                            typeof(NmeaView)
                        }
                    },
                    { "ToolsRegion", new[] { typeof(GpsConfigurationView) } }
                })),
            }), "Config"
                                                      );

            ImageLoader.HttpClient.DefaultRequestHeaders.Add("User-Agent", "XAML Map Control Test Application");
            var defaultCacheFolder = TileImageLoader.DefaultCacheFolder;

            TileImageLoader.Cache = new ImageFileCache(defaultCacheFolder);
        }
        public CompositeMapNavigatorService(IRegionManager regionManager, IContainerExtension container, IOptions <ContentNavigatorOptions> options)
        {
            _regionManager = regionManager;
            _container     = container;
            _options       = options;


            _rootItemList        = new ObservableCollection <MapItem>();
            RootItemList         = new ReadOnlyObservableCollection <MapItem>(_rootItemList);
            _itemsViewDictionary = new Dictionary <string, MapItem>();
            _itemsTagDictionary  = new Dictionary <string, MapItem>();
            ContentRegion        = _regionManager.Regions.Where((region, i) => region.Name == ContentRegionName).FirstOrDefault();
            ToolBarRegion        = _regionManager.Regions.Where((region, i) => region.Name == ToolbarRegionName).FirstOrDefault();
            if (ContentRegion != null)
            {
                ContentRegion.ActiveViews.CollectionChanged += ActiveViewsOnCollectionChanged;
            }
            if (options.Value.HasRoot)
            {
                RegisterItem("Root", MapItemBuilder.CreateDefaultBuilder(options.Value.RootDisplay).WithImagePackIcon(options.Value.RootPackIcon));
            }
        }
        public void OnInitialized(IContainerProvider containerProvider)
        {
            var compositeMapNavigatorService = containerProvider.Resolve <CompositeMapNavigatorService>();

            if (!compositeMapNavigatorService.TryGetItemByName("Config", out var _))
            {
                compositeMapNavigatorService.RegisterItem("Config", MapItemBuilder
                                                          .CreateDefaultBuilder("Config")
                                                          .WithImagePackIcon(PackIconKind.BoxView));
            }

            compositeMapNavigatorService.RegisterItem("Config\\IMU", MapItemBuilder
                                                      .CreateDefaultBuilder("IMU")
                                                      .WithImagePackIcon(PackIconKind.Compass)
                                                      .WithChild(new Collection <MapItem>
            {
                compositeMapNavigatorService.RegisterItem("Config\\IMU\\Diamond", MapItemBuilder
                                                          .CreateDefaultBuilder("Diamond")
                                                          .WithImagePackIcon(PackIconKind.Diamond)
                                                          .WithToolBars(new[] { typeof(ImuServiceToolBarView) })
                                                          .WithView(typeof(DiamondView))
                                                          .WithExtraView(new Dictionary <string, IEnumerable <Type> >
                {
                    {
                        "PopupToolBarRegion", new[]
                        {
                            typeof(CachedChannelView),
                            typeof(ImuView),
                        }
                    },
                    { "ToolsRegion", new[] { typeof(ImuConfigurationView) } }
                })
                                                          ),
            })
                                                      , "Config");
        }
 public static MapItemBuilder WithChild(this MapItemBuilder mapItemBuilder, Collection <MapItem> childItems)
 {
     mapItemBuilder.SetupActions.Add(3, item => new CompositeMapItem(item, childItems));
     return(mapItemBuilder);
 }
Exemple #10
0
 public static MapItemBuilder WithExtraView(this MapItemBuilder mapItemBuilder, Dictionary <string, IEnumerable <Type> > viewTypesKeyedByRegion)
 {
     mapItemBuilder.SetupActions.Add(4, item => new HasExtraViewMapItem(item, viewTypesKeyedByRegion));
     return(mapItemBuilder);
 }
Exemple #11
0
 public static MapItemBuilder WithToolBars(this MapItemBuilder mapItemBuilder, IEnumerable <Type> ToolBars)
 {
     mapItemBuilder.SetupActions.Add(5, item => new HasToolbarMapItem(item, ToolBars));
     return(mapItemBuilder);
 }
Exemple #12
0
 public static MapItemBuilder WithView(this MapItemBuilder mapItemBuilder, Type viewType)
 {
     mapItemBuilder.SetupActions.Add(20, item => new HasViewMapItem(item, viewType));
     return(mapItemBuilder);
 }