public bool CanMoveToResource() { ThrowIfNotOnUIThread(); var document = _dte.ActiveDocument; if (document == null) { return(false); } var filePath = document.FullName; var extension = Path.GetExtension(filePath); if (extension == null) { return(false); } var configuration = _exportProvider.GetExportedValue <IDteConfiguration>(); var configurations = configuration.MoveToResources.Items .Where(item => item.ParseExtensions().Contains(extension, StringComparer.OrdinalIgnoreCase)); if (!configurations.Any()) { return(false); } var selection = GetSelection(document); if (selection == null) { return(false); } if (!selection.Begin.EqualTo(selection.End)) { return(true); } IParser parser = new GenericParser(); var s = parser.LocateString(selection, false); return(s != null); }
public bool CanMoveToResource(Document?document) { Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread(); var extension = Path.GetExtension(document?.FullName); if (extension == null) { return(false); } var configuration = _exportProvider.GetExportedValue <DteConfiguration>(); var configurations = configuration.MoveToResources.Items .Where(item => item.ParseExtensions().Contains(extension, StringComparer.OrdinalIgnoreCase)); if (!configurations.Any()) { return(false); } var selection = GetSelection(document); if (selection == null) { return(false); } if (!selection.Begin.EqualTo(selection.End)) { return(true); } IParser parser = new GenericParser(); var s = parser.LocateString(selection, false); return(s != null); }
public bool CanMoveToResource(EnvDTE.Document document) { var extension = Path.GetExtension(document?.FullName); if (extension == null) { return(false); } var configuration = _compositionHost.GetExportedValue <DteConfiguration>(); var configurations = configuration.MoveToResources.Items .Where(item => item.ParseExtensions().Contains(extension, StringComparer.OrdinalIgnoreCase)); if (!configurations.Any()) { return(false); } Contract.Assume(document != null); var selection = GetSelection(document); if (selection == null) { return(false); } if (!selection.Begin.EqualTo(selection.End)) { return(true); } IParser parser = new GenericParser(); var s = parser.LocateString(selection, false); return(s != null); }
public ResourceTableEntry MoveToResource([CanBeNull] EnvDTE.Document document) { var extension = Path.GetExtension(document?.FullName); if (extension == null) { return(null); } var fileName = Path.GetFileNameWithoutExtension(document.FullName); var configurationItems = _exportProvider.GetExportedValue <DteConfiguration>().MoveToResources.Items; var configuration = configurationItems .FirstOrDefault(item => item.ParseExtensions().Contains(extension, StringComparer.OrdinalIgnoreCase)); if (configuration == null) { return(null); } var selection = GetSelection(document); if (selection == null) { return(null); } IParser parser = new GenericParser(); var text = !selection.IsEmpty ? selection.Text?.Trim('"') : parser.LocateString(selection, true); if (string.IsNullOrEmpty(text)) { return(null); } var patterns = configuration.ParsePatterns().ToArray(); var resourceViewModel = _exportProvider.GetExportedValue <ResourceViewModel>(); resourceViewModel.Reload(); var resourceManager = _exportProvider.GetExportedValue <ResourceManager>(); var entities = resourceManager.ResourceEntities .Where(entity => !entity.IsWinFormsDesignerResource) .ToList(); var filter = EntityFilter.BuildFilter(Settings.Default.ResourceFilter); if (filter != null) { entities.RemoveAll(item => !filter(item.ToString())); } var projectResources = new HashSet <ResourceEntity>(GetResourceEntiesFromProject(document, entities)); // put resources from the same project on top entities.RemoveAll(entity => projectResources.Contains(entity)); entities.InsertRange(0, projectResources); // put the last used entry on top, if it's in the same project, or the last access was cross-project. if (_lastUsedEntity != null) { if (!_isLastUsedEntityInSameProject || IsInProject(_lastUsedEntity, document)) { entities.Remove(_lastUsedEntity); entities.Insert(0, _lastUsedEntity); } } var viewModel = new MoveToResourceViewModel(patterns, entities, text, extension, selection.ClassName, selection.FunctionName, fileName); var confirmed = ConfirmationDialog.Show(_exportProvider, viewModel, Resources.MoveToResource, null).GetValueOrDefault(); if (!confirmed || string.IsNullOrEmpty(viewModel.Key)) { return(null); } ResourceTableEntry entry = null; if (!viewModel.ReuseExisiting) { var entity = _lastUsedEntity = viewModel.SelectedResourceEntity; if (entity == null) { return(null); } _isLastUsedEntityInSameProject = IsInProject(entity, document); entry = entity.Add(viewModel.Key); if (entry == null) { return(null); } entry.Values[null] = viewModel.Value; entry.Comment = viewModel.Comment; } selection.ReplaceWith(viewModel.Replacement?.Value); return(entry); }
public ResourceTableEntry MoveToResource(EnvDTE.Document document) { var extension = Path.GetExtension(document?.FullName); if (extension == null) { return(null); } var configurationItems = _compositionHost.GetExportedValue <DteConfiguration>().MoveToResources.Items; var configuration = configurationItems .FirstOrDefault(item => item.ParseExtensions().Contains(extension, StringComparer.OrdinalIgnoreCase)); if (configuration == null) { return(null); } Contract.Assume(document != null); var selection = GetSelection(document); if (selection == null) { return(null); } IParser parser = new GenericParser(); var text = !selection.IsEmpty ? selection.Text?.Trim('"') : parser.LocateString(selection, true); if (string.IsNullOrEmpty(text)) { return(null); } var patterns = configuration.ParsePatterns().ToArray(); var resourceViewModel = _compositionHost.GetExportedValue <ResourceViewModel>(); resourceViewModel.Reload(); var resourceManager = _compositionHost.GetExportedValue <ResourceManager>(); var entities = resourceManager.ResourceEntities .Where(entity => !entity.IsWinFormsDesignerResource) .ToArray(); var filter = Settings.Default?.ResourceFilter?.Trim(); if (!string.IsNullOrEmpty(filter)) { var regex = new Regex(filter, RegexOptions.IgnoreCase | RegexOptions.Singleline); entities = entities .Where(item => regex.Match(item.ToString()).Success) .ToArray(); } var favorites = new[] { GetPreferredResourceEntity(document, entities), _lastUsedEntity } .Where(item => item != null) .ToArray(); entities = favorites .Concat(entities.Except(favorites)) .ToArray(); var viewModel = new MoveToResourceViewModel(patterns, entities, text, extension, selection.ClassName, selection.FunctionName); var confirmed = ConfirmationDialog.Show(_compositionHost.Container, viewModel, Resources.MoveToResource).GetValueOrDefault(); if (confirmed && !string.IsNullOrEmpty(viewModel.Key)) { ResourceTableEntry entry = null; if (!viewModel.ReuseExisiting) { var entity = _lastUsedEntity = viewModel.SelectedResourceEntity; entry = entity?.Add(viewModel.Key); if (entry == null) { return(null); } entry.Values[null] = viewModel.Value; entry.Comment = viewModel.Comment; } selection.ReplaceWith(viewModel.Replacement); return(entry); } return(null); }
public ResourceTableEntry MoveToResource(Document document) { var extension = Path.GetExtension(document?.FullName); if (extension == null) { return(null); } var configurationItems = _exportProvider.GetExportedValue <DteConfiguration>().MoveToResources.Items; var configuration = configurationItems .FirstOrDefault(item => item.ParseExtensions().Contains(extension, StringComparer.OrdinalIgnoreCase)); if (configuration == null) { return(null); } Contract.Assume(document != null); var selection = GetSelection(document); if (selection == null) { return(null); } IParser parser = new GenericParser(); var text = !selection.IsEmpty ? selection.Text?.Trim('"') : parser.LocateString(selection, true); if (string.IsNullOrEmpty(text)) { return(null); } var patterns = configuration.ParsePatterns().ToArray(); var resourceManager = _exportProvider.GetExportedValue <ResourceManager>(); resourceManager.Reload(ResourceLoadOptions.None); var entities = resourceManager.ResourceEntities .Where(entity => !entity.IsWinFormsDesignerResource) .ToArray(); var viewModel = new MoveToResourceViewModel(patterns, entities, text, extension, selection.ClassName, selection.FunctionName) { SelectedResourceEntity = GetPreferredResourceEntity(document, entities) ?? _lastUsedEntity }; var confirmed = ConfirmationDialog.Show(_exportProvider, viewModel, Resources.MoveToResource).GetValueOrDefault(); if (confirmed && !string.IsNullOrEmpty(viewModel.Key)) { ResourceTableEntry entry = null; if (!viewModel.ReuseExisiting) { var entity = _lastUsedEntity = viewModel.SelectedResourceEntity; entry = entity?.Add(viewModel.Key); if (entry == null) { return(null); } entry.Values[null] = viewModel.Value; entry.Comment = viewModel.Comment; } selection.ReplaceWith(viewModel.Replacement); return(entry); } ; return(null); }