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}"); } } }); }
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(); } } }
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)); }