/*
 * Copyright 2000-2012 JetBrains s.r.o.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.intellij.ide.ui.laf.darcula;

import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
import com.intellij.ide.ui.UISettings;
import com.intellij.openapi.actionSystem.impl.ActionToolbarImpl;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
import com.intellij.openapi.editor.EditorFactory;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.vcs.FileStatusManager;
import com.intellij.openapi.wm.IdeFrame;
import com.intellij.openapi.wm.ex.WindowManagerEx;
import com.intellij.openapi.wm.impl.IdeFrameImpl;
import com.intellij.ui.JBColor;

/**
 * @author Konstantin Bulenkov
 */
public class DarculaInstaller {

  public static void uninstall() {
    JBColor.setDark(false);
    IconLoader.setUseDarkIcons(false);
    if (DarculaLaf.NAME.equals(EditorColorsManager.getInstance().getGlobalScheme().getName())) {
      final EditorColorsScheme scheme = EditorColorsManager.getInstance().getScheme(EditorColorsScheme.DEFAULT_SCHEME_NAME);
      if (scheme != null) {
        EditorColorsManager.getInstance().setGlobalScheme(scheme);
      }
    }

    update();
  }

  private static void update() {
    UISettings.getInstance().fireUISettingsChanged();
    EditorFactory.getInstance().refreshAllEditors();

    Project[] openProjects = ProjectManager.getInstance().getOpenProjects();
    for (Project openProject : openProjects) {
      FileStatusManager.getInstance(openProject).fileStatusesChanged();
      DaemonCodeAnalyzer.getInstance(openProject).restart();
    }
    for (IdeFrame frame : WindowManagerEx.getInstanceEx().getAllProjectFrames()) {
      if (frame instanceof IdeFrameImpl) {
        ((IdeFrameImpl)frame).updateView();
      }
    }
    //Editor[] editors = EditorFactory.getInstance().getAllEditors();
    //for (Editor editor : editors) {
    //  ((EditorEx)editor).reinitSettings();
    //}
    ActionToolbarImpl.updateAllToolbarsImmediately();

    restart(); //todo[kb] remove when get fixed ToolbarDecorator and toolwindow tabs
  }

  private static void restart() {
    if (Messages.showOkCancelDialog("You must restart the IDE to changes take effect. Restart now?", "Restart Is Required", "Restart", "Postpone", Messages.getQuestionIcon()) == Messages.OK) {
      ApplicationManagerEx.getApplicationEx().restart(true);
    }
  }

  public static void install() {
    JBColor.setDark(true);
    IconLoader.setUseDarkIcons(true);
    if (!DarculaLaf.NAME.equals(EditorColorsManager.getInstance().getGlobalScheme().getName())) {
      final EditorColorsScheme scheme = EditorColorsManager.getInstance().getScheme(DarculaLaf.NAME);
      if (scheme != null) {
        EditorColorsManager.getInstance().setGlobalScheme(scheme);
      }
    }
    update();
  }
}

@@ -660,2506 +660,689 @@
 lij.
-codeInsight.daemon.DaemonCodeAnalyzer;%0Aimport com.intellij.ide.ui.UISettings;%0Aimport com.intellij.openapi.actionSystem.impl.ActionToolbarImpl;%0Aimport com.intellij.openapi.application.ex.ApplicationManagerEx;%0Aimport com.intellij.openapi.editor.EditorFactory;%0Aimport com.intellij.openapi.editor.colors.EditorColorsManager;%0Aimport com.intellij.openapi.editor.colors.EditorColorsScheme;%0Aimport com.intellij.openapi.project.Project;%0Aimport com.intellij.openapi.project.ProjectManager;%0Aimport com.intellij.openapi.ui.Messages;%0Aimport com.intellij.openapi.util.IconLoader;%0Aimport com.intellij.openapi.vcs.FileStatusManager;%0Aimport com.intellij.openapi.wm.IdeFrame;%0Aimport com.intellij.openapi.wm.ex.WindowManagerEx;%0Aimport com.intellij.openapi.wm.impl.IdeFrameImpl;%0Aimport com.intellij.ui.JBColor;%0A%0A/**%0A * @author Konstantin Bulenkov%0A */%0Apublic class DarculaInstaller %7B%0A%0A  public static void uninstall() %7B%0A    JBColor.setDark(false);%0A    IconLoader.setUseDarkIcons(false);%0A    if (DarculaLaf.NAME.equals(EditorColorsManager.getInstance().getGlobalScheme().getName())) %7B%0A      final EditorColorsScheme scheme = EditorColorsManager.getInstance().getScheme(EditorColorsScheme.DEFAULT_SCHEME_NAME);%0A      if (scheme != null) %7B%0A        EditorColorsManager.getInstance().setGlobalScheme(scheme);%0A      %7D%0A    %7D%0A%0A    update();%0A  %7D%0A%0A  private static void update() %7B%0A    UISettings.getInstance().fireUISettingsChanged();%0A    EditorFactory.getInstance().refreshAllEditors();%0A%0A    Project%5B%5D openProjects = ProjectManager.getInstance().getOpenProjects();%0A    for (Project openProject : openProjects) %7B%0A      FileStatusManager.getInstance(openProject).fileStatusesChanged();%0A      DaemonCodeAnalyzer.getInstance(openProject).restart();%0A    %7D%0A    for (IdeFrame frame : WindowManagerEx.getInstanceEx().getAllProjectFrames()) %7B%0A      if (frame instanceof IdeFrameImpl) %7B%0A        ((IdeFrameImpl)frame).updateView();%0A      %7D%0A    %7D%0A    //Editor%5B%5D editors = EditorFactory.getInstance().getAllEditors();%0A    //for (Editor editor : editors) %7B%0A    //  ((EditorEx)editor).reinitSettings();%0A    //%7D%0A    ActionToolbarImpl.updateAllToolbarsImmediately();%0A%0A    restart(); //todo%5Bkb%5D remove when get fixed ToolbarDecorator and toolwindow tabs%0A  %7D%0A%0A  private static void restart() %7B%0A    if (Messages.showOkCancelDialog(%22You must restart the IDE to changes take effect. Restart now?%22, %22Restart Is Required%22, %22Restart%22, %22Postpone%22, Messages.getQuestionIcon()) == Messages.OK) %7B%0A      ApplicationManagerEx.getApplicationEx().restart(true);
+openapi.editor.colors.EditorColorsManager;%0Aimport com.intellij.openapi.editor.colors.EditorColorsScheme;%0Aimport com.intellij.openapi.util.IconLoader;%0Aimport com.intellij.ui.JBColor;%0A%0A/**%0A * @author Konstantin Bulenkov%0A */%0Apublic class DarculaInstaller %7B%0A%0A  public static void uninstall() %7B%0A    JBColor.setDark(false);%0A    IconLoader.setUseDarkIcons(false);%0A    if (DarculaLaf.NAME.equals(EditorColorsManager.getInstance().getGlobalScheme().getName())) %7B%0A      final EditorColorsScheme scheme = EditorColorsManager.getInstance().getScheme(EditorColorsScheme.DEFAULT_SCHEME_NAME);%0A      if (scheme != null) %7B%0A        EditorColorsManager.getInstance().setGlobalScheme(scheme);%0A      %7D
 %0A   
@@ -1760,22 +1760,8 @@
   %7D%0A
-    update();%0A
   %7D%0A

remove duplicate updateUI & drop restart dialog