public RadioButtonViewModel(string description, string preview, string group, TOption value, Option2 <TOption> option, AbstractOptionPreviewViewModel info, OptionStore optionStore)
     : base(description, preview, info, isChecked: optionStore.GetOption(option).Equals(value), group: group)
 {
     _value  = value;
     _option = option;
 }
Exemplo n.º 2
0
 public CheckBoxOptionViewModel(IOption option, string description, string preview, AbstractOptionPreviewViewModel info, OptionStore optionStore)
     : this(option, description, preview, preview, info, optionStore)
 {
 }
Exemplo n.º 3
0
 protected abstract AbstractOptionPageControl CreateOptionPage(IServiceProvider serviceProvider, OptionStore optionStore);
Exemplo n.º 4
0
 public CheckBoxOptionViewModel(IOption option, string description, string truePreview, string falsePreview, AbstractOptionPreviewViewModel info, OptionStore optionStore)
     : base(option, description, truePreview, falsePreview, info)
 {
     SetProperty(ref _isChecked, (bool)optionStore.GetOption(new OptionKey(option, option.IsPerLanguage ? info.Language : null)));
 }
Exemplo n.º 5
0
 protected override AbstractOptionPageControl CreateOptionPage(IServiceProvider serviceProvider, OptionStore optionStore)
 {
     return(new InternalOptionsControl(nameof(InternalSolutionCrawlerOptions), optionStore));
 }
 protected override AbstractOptionPageControl CreateOptionPage(IServiceProvider serviceProvider, OptionStore optionStore)
 {
     return(new InternalOptionsControl(nameof(EditorComponentOnOffOptions), optionStore));
 }
Exemplo n.º 7
0
        public InternalOptionsControl(string featureOptionName, OptionStore optionStore)
            : base(optionStore)
        {
            _featureOptionName = featureOptionName;

            // options
            var optionsPanel = new StackPanel();

            this.AddOptions(optionsPanel);

            // scroll
            var viewer = new ScrollViewer()
            {
                VerticalScrollBarVisibility   = ScrollBarVisibility.Auto,
                HorizontalScrollBarVisibility = ScrollBarVisibility.Auto
            };

            viewer.Content = optionsPanel;

            // search
            var searchBox = new TextBox()
            {
                MinWidth = 200, HorizontalAlignment = HorizontalAlignment.Stretch
            };

            var searchButton = new Button()
            {
                Content = "Search"
            };

            searchButton.Click += (o, a) =>
            {
                foreach (var item in optionsPanel.Children.OfType <CheckBox>())
                {
                    var title = item.Content as string;
                    if (title == null)
                    {
                        continue;
                    }

                    // pattern not match
                    if (title.IndexOf(searchBox.Text, StringComparison.OrdinalIgnoreCase) < 0)
                    {
                        // hide it
                        item.Visibility = Visibility.Collapsed;
                    }
                    else
                    {
                        item.Visibility = Visibility.Visible;
                    }
                }
            };

            var clearButton = new Button()
            {
                Content = "Clear"
            };

            clearButton.Click += (o, a) => optionsPanel.Children.OfType <CheckBox>().Do(c => c.Visibility = Visibility.Visible);

            var searchPanel = new StackPanel()
            {
                Orientation         = Orientation.Horizontal,
                Margin              = new Thickness(5),
                HorizontalAlignment = HorizontalAlignment.Stretch
            };

            searchPanel.Children.Add(searchBox);
            searchPanel.Children.Add(searchButton);
            searchPanel.Children.Add(clearButton);

            // button
            var checkAllButton = new Button()
            {
                Content = "Check All"
            };

            checkAllButton.Click += (o, a) => optionsPanel.Children.OfType <CheckBox>().Where(c => c.Visibility == Visibility.Visible).Do(c => c.IsChecked = true);

            var uncheckAllButton = new Button()
            {
                Content = "Uncheck All"
            };

            uncheckAllButton.Click += (o, a) => optionsPanel.Children.OfType <CheckBox>().Where(c => c.Visibility == Visibility.Visible).Do(c => c.IsChecked = false);

            var selectionPanel = new StackPanel()
            {
                Orientation         = Orientation.Horizontal,
                Margin              = new Thickness(5),
                HorizontalAlignment = HorizontalAlignment.Stretch
            };

            selectionPanel.Children.Add(checkAllButton);
            selectionPanel.Children.Add(uncheckAllButton);

            // main panel
            var mainPanel = new DockPanel()
            {
                HorizontalAlignment = HorizontalAlignment.Stretch
            };

            mainPanel.Children.Add(searchPanel);
            mainPanel.Children.Add(selectionPanel);
            mainPanel.Children.Add(viewer);

            DockPanel.SetDock(searchPanel, Dock.Top);
            DockPanel.SetDock(selectionPanel, Dock.Bottom);

            this.Content = mainPanel;
        }
        public void UpdatePreview(string text)
        {
            var service = VisualStudioMefHostServices.Create(
                _componentModel.GetService <ExportProvider>()
                );
            var workspace = new PreviewWorkspace(service);
            var fileName  = "project." + (Language == "C#" ? "csproj" : "vbproj");
            var project   = workspace.CurrentSolution.AddProject(fileName, "assembly.dll", Language);

            // use the mscorlib, system, and system.core that are loaded in the current process.
            string[] references = { "mscorlib", "System", "System.Core" };

            var metadataService = workspace.Services.GetService <IMetadataService>();

            var referenceAssemblies = Thread
                                      .GetDomain()
                                      .GetAssemblies()
                                      .Where(
                x => references.Contains(x.GetName(true).Name, StringComparer.OrdinalIgnoreCase)
                )
                                      .Select(
                a =>
                metadataService.GetReference(
                    a.Location,
                    MetadataReferenceProperties.Assembly
                    )
                );

            project = project.WithMetadataReferences(referenceAssemblies);

            var document  = project.AddDocument("document", SourceText.From(text, Encoding.UTF8));
            var formatted = Formatter
                            .FormatAsync(document, OptionStore.GetOptions())
                            .WaitAndGetResult(CancellationToken.None);

            var textBuffer = _textBufferFactoryService.CreateTextBuffer(
                formatted.GetTextSynchronously(CancellationToken.None).ToString(),
                _contentType
                );

            var container = textBuffer.AsTextContainer();

            var projection = _projectionBufferFactory.CreateProjectionBufferWithoutIndentation(
                _contentTypeRegistryService,
                _editorOptions.CreateOptions(),
                textBuffer.CurrentSnapshot,
                separator: "",
                exposedLineSpans: GetExposedLineSpans(textBuffer.CurrentSnapshot).ToArray()
                );

            var textView = _textEditorFactoryService.CreateTextView(
                projection,
                _textEditorFactoryService.CreateTextViewRoleSet(PredefinedTextViewRoles.Interactive)
                );

            this.TextViewHost = _textEditorFactoryService.CreateTextViewHost(
                textView,
                setFocus: false
                );

            workspace.TryApplyChanges(document.Project.Solution);
            workspace.OpenDocument(document.Id, container);

            this.TextViewHost.Closed += (s, a) =>
            {
                workspace.Dispose();
                workspace = null;
            };
        }