NimCodeStylePreferencesWidget::NimCodeStylePreferencesWidget(ICodeStylePreferences *preferences, QWidget *parent)
    : QWidget(parent)
    , m_preferences(preferences)
    , m_ui(new Ui::NimCodeStylePreferencesWidget())
{
    m_ui->setupUi(this);
    m_ui->tabPreferencesWidget->setPreferences(preferences);
    m_ui->previewTextEdit->setPlainText(Nim::Constants::C_NIMCODESTYLEPREVIEWSNIPPET);

    ISnippetProvider *provider = ExtensionSystem::PluginManager::getObject<ISnippetProvider>(
                [](ISnippetProvider *provider) {
            return provider->groupId() == Nim::Constants::C_NIMSNIPPETSGROUP_ID;
    });

    if (provider)
        provider->decorateEditor(m_ui->previewTextEdit);

    decorateEditor(TextEditorSettings::fontSettings());
    connect(TextEditorSettings::instance(), &TextEditorSettings::fontSettingsChanged,
       this, &NimCodeStylePreferencesWidget::decorateEditor);

    connect(m_preferences, &ICodeStylePreferences::currentTabSettingsChanged,
            this, &NimCodeStylePreferencesWidget::updatePreview);

    setVisualizeWhitespace(true);

    updatePreview();
}
QmlJSCodeStylePreferencesWidget::QmlJSCodeStylePreferencesWidget(QWidget *parent) :
    QWidget(parent),
    m_preferences(0),
    m_ui(new Ui::QmlJSCodeStyleSettingsPage)
{
    m_ui->setupUi(this);

    ISnippetProvider *provider = ExtensionSystem::PluginManager::getObject<ISnippetProvider>(
        [](ISnippetProvider *provider) {
            return provider->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID);
        });

    if (provider)
        provider->decorateEditor(m_ui->previewTextEdit);

    decorateEditor(TextEditorSettings::fontSettings());
    connect(TextEditorSettings::instance(), SIGNAL(fontSettingsChanged(TextEditor::FontSettings)),
       this, SLOT(decorateEditor(TextEditor::FontSettings)));

    setVisualizeWhitespace(true);

    updatePreview();
}