private void setCurrentResource(Views.ResourceListItem resource) { if (currentResource == resource) return; currentResource = resource; if (resource != null) { if (resource.Resource.Mod != CurrentMod) setCurrentMod(resource.Resource.Mod); References.Clear(); // Get the references var references = resource.Resource.References.Select(m => new Views.ReferenceListItem(m, Views.ReferenceListItem.Display.NoMod, resource.Resource)); var incomingReferences = resource.Resource.ReferredBy.Select(m => new Views.ReferenceListItem(m, Views.ReferenceListItem.Display.SourcedIncoming, resource.Resource)); var dispatcher = App.Current.Dispatcher; foreach (var e in references.Union(incomingReferences).OrderBy(r => r.Reference.Valid).ThenBy(r => r.ToString()))//resource.Resource.References.OrderBy(r => r.Valid).Select(m => new Views.ReferenceListItem(m, Views.ReferenceListItem.Display.NoMod, resource.Resource))) { dispatcher.InvokeAsync(() => References.Add(e), DispatcherPriority.Background); } } RaisePropertyChanged("CurrentResource"); RaisePropertyChanged("CurrentResourceItem"); // Make sure that all resources are properly formatted Providers.Commands.OpenResource.RaiseCanExecuteChanged(); Providers.Commands.OpenResourceFolder.RaiseCanExecuteChanged(); ShowJsonWindow.RaiseCanExecuteChanged(); }
private void setCurrentMod(Views.ModListItem mod) { if (currentMod == mod) return; currentMod = mod; Resources.Clear(); References.Clear(); setCurrentResource(null); if (mod != null) { //System.Diagnostics.Debug.WriteLine("Start: {0}", sw.Elapsed); var dispatcher = App.Current.Dispatcher; foreach (var resource in mod.Mod.Resources.OrderBy(r => r.Valid).ThenBy(r => r.Location)) { dispatcher.InvokeAsync(() => { var resourceView = new Views.ResourceListItem(resource, true); Resources.Add(resourceView); if (resource is Manifest) setCurrentResource(resourceView); }, DispatcherPriority.Background); } } RaisePropertyChanged("CurrentMod"); RaisePropertyChanged("CurrentModItem"); }