Exemple #1
0
        private async Task OnProjectOpendedAsync(ProjectEventArgs e)
        {
            // 1) Check all existing project items.
            // 2) Add a work list factory to registry for every work list project item found in custom project items
            //	  (Use work list factory because we do not want to create a work list for EVERY work list project item.
            //	   Only create a work list (from a work list factory / work list custom project item) if a layer requests a work
            //	   list as a data source
            // order of method calls:
            // 1. Module.Initialize
            // 2. OnProjectOpenedAsync
            // 3. OnProjectOpened
            // 4. Pluggable Datasource Open()

            await Task.Run(() =>
            {
                foreach (var item in ProjectItemUtils.Get <WorklistItem>())
                {
                    var factory = new XmlBasedWorkListFactory(item.Path, item.WorklistName);

                    if (_registry.TryAdd(factory))
                    {
                        _msg.Debug($"Add work list {item.WorklistName} from file {item.Path}");
                    }
                }
            });
        }
Exemple #2
0
        public void ShowView()
        {
            foreach (IWorkList worklist in GetWorklists())
            {
                // after Pro start up there is no view yet
                if (!_viewsByWorklistName.ContainsKey(worklist.Name))
                {
                    WorklistItem item = ProjectItemUtils.Get <WorklistItem>(worklist.Name);
                    Assert.NotNull(item);

                    _viewsByWorklistName.Add(worklist.Name, new WorkListObserver(worklist, item));
                }

                IWorkListObserver view = _viewsByWorklistName[worklist.Name];

                if (_layersByWorklistName.TryGetValue(worklist.Name, out FeatureLayer layer))
                {
                    view.Show(layer.Name);
                }
                else
                {
                    view.Show();
                }
            }
        }
Exemple #3
0
        public string ShowWorklist([NotNull] WorkEnvironmentBase environment, [NotNull] string path)
        {
            Assert.ArgumentNotNull(environment, nameof(environment));
            Assert.ArgumentNotNullOrEmpty(path, nameof(path));

            IWorkList worklist;

            string name = WorkListUtils.GetName(path).ToLower();

            if (_registry.Exists(name))
            {
                worklist = _registry.Get(name);
            }
            else
            {
                var factory = new XmlBasedWorkListFactory(path, name);

                if (_registry.TryAdd(factory))
                {
                    _msg.Debug($"Add work list {name} from file {path}");
                }

                worklist = _registry.Get(name);
            }

            Assert.NotNull(worklist);

            if (!_viewsByWorklistName.ContainsKey(worklist.Name))
            {
                var item = ProjectItemUtils.Get <WorklistItem>(Path.GetFileName(path));

                if (item == null)
                {
                    Assert.True(ProjectItemUtils.TryAdd(path, out item), $"Cannot add item {path}");
                    Assert.NotNull(item);
                }

                _viewsByWorklistName.Add(worklist.Name, new WorkListObserver(worklist, item));

                Uri uri = WorkListUtils.GetDatasource(GetProject().HomeFolderPath, name,
                                                      environment.FileSuffix);
                FeatureLayer layer = AddLayer(uri, name, item.Name);

                // use item name as layer name (and as view display name as well)
                LayerUtils.ApplyRenderer(layer, environment.GetLayerDocument());
            }

            return(Assert.NotNullOrEmpty(worklist.Name));
        }