diff --git a/Models/Project.cs b/Models/Project.cs index 8034bd6..6c0d2bc 100644 --- a/Models/Project.cs +++ b/Models/Project.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json; +using GalaSoft.MvvmLight; +using Newtonsoft.Json; using System; using System.Collections.Generic; using WebResourceManager.Data; @@ -6,14 +7,19 @@ namespace WebResourceManager.Models { - public class Project + public class Project : ObservableObject { private const string OVERRIDE_FILE_NAME = ".webresourceoverrides"; private const string CONNECTION_KEY = "WebResourceManager"; public Guid Id { get; set; } - public string Name { get; set; } + private string _name; + public string Name + { + get { return _name; } + set { Set(ref _name, value); } + } public string Path { get; set; } diff --git a/README.md b/README.md new file mode 100644 index 0000000..d27ec26 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# Web Resource Manager +A utility to improve your Dynamics 365 Web Resource workflow. + +ScreenShot + +# Key Features +- Upload and publish multiple files at a time +- Monitor the local file system for changes and automatically select the files for upload +- Monitor the remote system for changes to prevent conflicts with multiple devs and warn before upload +- View a Web Resource in Dynamics +- Quickly open a file in VS Code +- Quickly open a folder in VS Code (particularly useful for custom UI projects) +- Open a folder in Windows Explorer +- Integration with Imposter for Fiddler +- Diff local files vs. their remote counterparts +- Automatic "namespacing" for files (ex. c:\source\project\webresources\form\account.js becomes new_/form/account.js) +- View a list of all web resources in the target solution and their current status, mixed with all local files to see what's where at a glance +- Filtered the previously mentioned views further to just see remote, local, modified, etc. + +# Optional "Requirements" +1. [Visual Studio Code](https://code.visualstudio.com/): Recommended editor/diff tool +2. [Fiddler](http://www.telerik.com/fiddler) 4.5+: For debugging without uploading over, and over, and over again +3. [Imposter for Fiddler](https://github.com/gotdibbs/Imposter.Fiddler): Similar to Fiddler's AutoResponder, but with more power + +# Installation +Please see the [RELEASES](../../releases) + +# Problems? Suggestions? +Pull requests speak louder than issues, but I'll take both. \ No newline at end of file diff --git a/ViewModels/MainWindowViewModel.cs b/ViewModels/MainWindowViewModel.cs index 565c11f..5f966b2 100644 --- a/ViewModels/MainWindowViewModel.cs +++ b/ViewModels/MainWindowViewModel.cs @@ -420,7 +420,12 @@ private void LoadSettings() _settings = Settings.Load(); Profiles = new ObservableCollection(ImposterSettings.Load().Profiles); - Projects = new ObservableCollection(_settings.Projects.OrderBy(p => p.Name)); + Projects = new ObservableCollection(); + Projects.CollectionChanged += Projects_CollectionChanged; + foreach (var project in _settings.Projects.OrderBy(p => p.Name)) + { + Projects.Add(project); + } if (Projects.Count > 0) { @@ -438,6 +443,28 @@ private void LoadSettings() } } + private void Projects_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) + { + if (e.OldItems != null) + { + foreach (INotifyPropertyChanged item in e.OldItems) + item.PropertyChanged -= Project_PropertyChanged; + } + if (e.NewItems != null) + { + foreach (INotifyPropertyChanged item in e.NewItems) + item.PropertyChanged += Project_PropertyChanged; + } + } + + private void Project_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == "Name") + { + RaisePropertyChanged(() => SelectedProjectName); + } + } + private async void LoadProject() { if (SelectedProject == null || string.IsNullOrEmpty(SelectedProject.ConnectionString)) @@ -908,7 +935,7 @@ private void StartTimer() private async void Timer_Elapsed(object sender, ElapsedEventArgs e) { - if (!IsConnected) + if (!IsConnected || IsSettingsVisible) { return; } diff --git a/screenshot.JPG b/screenshot.JPG new file mode 100644 index 0000000..ca8d1c5 Binary files /dev/null and b/screenshot.JPG differ