示例#1
0
        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();
        }
示例#2
0
        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");
        }