Example #1
0
        private async void ExecuteAsync(object sender, EventArgs e)
        {
            NewItemTarget target = NewItemTarget.Create(_dte);

            if (target == null)
            {
                MessageBox.Show(
                    "Could not determine where to create the new file. Select a file or folder in Solution Explorer and try again.",
                    Vsix.Name,
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            dynamic inputValues        = PromptForFileName(target.Directory);
            string  input              = inputValues.Input.TrimStart('/', '\\').Replace("/", "\\");
            bool    isEmbeddedResource = inputValues.IsEmbeddedResource;

            if (string.IsNullOrEmpty(input))
            {
                return;
            }

            string[] parsedInputs = GetParsedInput(input);

            foreach (string i in parsedInputs)
            {
                string name = i;

                if (!name.EndsWith("\\", StringComparison.Ordinal))
                {
                    // only prepend the date/time onto filenames (not folders)
                    name = name.Insert(input.LastIndexOf("\\") + 1, DateTime.Now.ToString("yyyyMMdd_HHmmss_"));
                }

                try
                {
                    AddItemAsync(name, target, isEmbeddedResource).Forget();
                }
                catch (Exception ex) when(!ErrorHandler.IsCriticalException(ex))
                {
                    Logger.Log(ex);
                    MessageBox.Show(
                        $"Error creating file '{name}':{Environment.NewLine}{ex.Message}",
                        Vsix.Name,
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                }
            }
        }