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(); } } }
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 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)); }
public async Task CreateWorkListAsync([NotNull] WorkEnvironmentBase environment, [NotNull] string name) { Assert.ArgumentNotNull(environment, nameof(environment)); Assert.ArgumentNotNullOrEmpty(name, nameof(name)); Assert.False(_registry.Exists(name), $"work list {name} already exists"); Uri uri = WorkListUtils.GetDatasource(GetProject().HomeFolderPath, name, environment.FileSuffix); IWorkList worklist = await environment.CreateWorkListAsync(uri.LocalPath, name); if (worklist == null) { return; } // after creation go to nearest item worklist.GoNearest(MapView.Active.Extent); // Commit writes work list definition to disk. // Necessary for adding project item. worklist.Commit(); // wiring work list events, etc. is done in OnDrawComplete // register work list before creating the layer _registry.TryAdd(worklist); Assert.True(ProjectItemUtils.TryAdd(uri.LocalPath, out WorklistItem item), $"cannot add item {worklist.Name}"); if (!_viewsByWorklistName.ContainsKey(worklist.Name)) { _viewsByWorklistName.Add(worklist.Name, new WorkListObserver(worklist, item)); } FeatureLayer layer = AddLayer(uri, name, worklist.DisplayName); LayerUtils.ApplyRenderer(layer, environment.GetLayerDocument()); }
// Returns the relative path of the folder selected in Visual Studio or an empty // string if no folder is selected. protected string GetSelectionRelativePath() { return(Context.ActiveProjectItem == null ? String.Empty : ProjectItemUtils.GetProjectRelativePath(Context.ActiveProjectItem)); }
public override void GenerateCode() { if (_moduleViewModel == null) { throw new InvalidOperationException("需要先调用ShowUIAndValidate方法。"); } Cursor currentCursor = Mouse.OverrideCursor; try { Mouse.OverrideCursor = Cursors.Wait; var project = Context.ActiveProject; var entity = _moduleViewModel.ModelType.CodeType; var entityName = entity.Name; var entityNamespace = entity.Namespace.FullName; var entityFolerName = ProjectItemUtils.GetModuleName(entityNamespace); var puralEntityName = VmUtils.ToPlural(entityName); var projectNamespace = ProjectItemUtils.GetProjectName(entityNamespace); var overwrite = _moduleViewModel.OverwriteFiles; Dictionary <string, object> templateParams = new Dictionary <string, object>() { { "AppName", projectNamespace } , { "EntityNamespace", entityNamespace } , { "EntityFolerName", entityFolerName } , { "PluralEntityName", puralEntityName } , { "EntityName", entityName } , { "DtoNamespace", _moduleViewModel.DtoNamespace } , { "FunctionName", _moduleViewModel.FunctionName } , { "DtoMetaTable", _moduleViewModel.DtoClassMetadataViewModel.DataModel } , { "ItemMetaTable", _moduleViewModel.ItemClassMetadataViewModel.DataModel } }; var templates = new[] { @"{AppName}.Web\Areas\{Module}\Controllers\{PluralEntityName}Controller.cs", @"{AppName}.Web\Areas\{Module}\Models\{PluralEntityName}\CreateOrEdit{Entity}ModalViewModel.cs", @"{AppName}.Web\Areas\{Module}\Views\{PluralEntityName}\_CreateOrEditModal.cshtml", @"{AppName}.Web\Areas\{Module}\Views\{PluralEntityName}\Index.cshtml", @"{AppName}.Web\wwwroot\view-resources\Areas\{Module}\Views\{PluralEntityName}\_CreateOrEditModal.js", @"{AppName}.Web\wwwroot\view-resources\Areas\{Module}\Views\{PluralEntityName}\Index.js", @"{AppName}.Web\wwwroot\view-resources\Areas\{Module}\Views\{PluralEntityName}\index.less", @"{AppName}.Common\{PluralEntityName}PageNames.cs", }; foreach (var template in templates) { string outputPath = Path.GetFileNameWithoutExtension(Path.Combine(@"_GeneratedCode\", template.Replace("{AppName}", projectNamespace) .Replace("{Module}", "Admin") .Replace("{PluralEntityName}", puralEntityName) .Replace("{Entity}", entityName))); string templatePath = Path.Combine(template); AddFileFromTemplate(project, outputPath, templatePath, templateParams, !overwrite); } } finally { Mouse.OverrideCursor = currentCursor; } }
public override void GenerateCode() { if (_moduleViewModel == null) { throw new InvalidOperationException("需要先调用ShowUIAndValidate方法。"); } Cursor currentCursor = Mouse.OverrideCursor; try { Mouse.OverrideCursor = Cursors.Wait; var project = Context.ActiveProject; var entity = _moduleViewModel.ModelType.CodeType; var entityPrimaryKeyType = "int"; entityPrimaryKeyType = GetEntityPrimaryKeyType(entity); var entityName = entity.Name; var entityNamespace = entity.Namespace.FullName; var projectNamespace = ProjectItemUtils.GetProjectName(entityNamespace); var functionName = _moduleViewModel.FunctionName; var pluralEntityName = VmUtils.ToPlural(entityName); var entityFolerName = ProjectItemUtils.GetModuleName(entityNamespace); var overwrite = _moduleViewModel.OverwriteFiles; Dictionary <string, object> templateParams = new Dictionary <string, object>() { { "AppName", projectNamespace } , { "EntityNamespace", entityNamespace } , { "EntityName", entityName } , { "EntityPrimaryKeyType", entityPrimaryKeyType } , { "EntityFolerName", entityFolerName } , { "PluralEntityName", pluralEntityName } , { "FunctionName", functionName } , { "DtoMetaTable", _moduleViewModel.DtoClassMetadataViewModel.DataModel } }; var templates = new[] { @"{AppName}.Application\{EntityFolerName}\Dto\{Entity}EditDto.cs", @"{AppName}.Application\{EntityFolerName}\Dto\{Entity}ListDto.cs", @"{AppName}.Application\{EntityFolerName}\Dto\CreateOrUpdate{Entity}Input.cs", @"{AppName}.Application\{EntityFolerName}\Dto\Get{Entity}ForEditOutput.cs", @"{AppName}.Application\{EntityFolerName}\Dto\Get{Entity}ListInput.cs", @"{AppName}.Application\{EntityFolerName}\{Entity}AppService.cs", @"{AppName}.Application\{EntityFolerName}\I{Entity}AppService.cs", @"{AppName}.Common\{Entity}Common.cs", @"{AppName}.Core\IRepositories\I{Entity}Repository.cs", @"{AppName}.EntityFramework\EntityFramework\Repositories\{Entity}Repository.cs" }; foreach (var template in templates) { string outputPath = Path.GetFileNameWithoutExtension(Path.Combine(@"_GeneratedCode\", template.Replace("{AppName}", projectNamespace) .Replace("{EntityFolerName}", entityFolerName) .Replace("{Entity}", entityName))); string templatePath = Path.Combine(template); AddFileFromTemplate(project, outputPath, templatePath, templateParams, !overwrite); } } finally { Mouse.OverrideCursor = currentCursor; } }