/*
 * Copyright 2000-2009 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.ui.tabs;

import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.NonDefaultProjectConfigurable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.ui.FileColorManager;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;

import javax.swing.*;

/**
 * @author spleaner
 */
public class FileColorsConfigurable implements Configurable, NonDefaultProjectConfigurable {
  private final Project myProject;
  private FileColorsConfigurablePanel myPanel;

  public FileColorsConfigurable(@NotNull final Project project) {
    myProject = project;
  }

  @Nls
  public String getDisplayName() {
    return "File Colors";
  }

  public Icon getIcon() {
    return null;
  }

  public String getHelpTopic() {
    return "reference.settings.ide.settings.file-colors";
  }

  public JComponent createComponent() {
    if (myPanel == null) {
      myPanel = new FileColorsConfigurablePanel((FileColorManagerImpl) FileColorManager.getInstance(myProject));
    }

    return myPanel;
  }

  public boolean isModified() {
    return myPanel != null && myPanel.isModified();
  }

  public void apply() throws ConfigurationException {
    if (myPanel != null) myPanel.apply();
  }

  public void reset() {
    if (myPanel != null) myPanel.reset();
  }

  public void disposeUIResources() {
    if (myPanel !=  null) {
      Disposer.dispose(myPanel);
      myPanel = null;
    }
  }
}

@@ -795,32 +795,92 @@
 ctConfigurable;%0A
+import com.intellij.openapi.options.SearchableConfigurable;%0A
 import com.intel
@@ -1171,16 +1171,26 @@
 lements 
+Searchable
 Configur
@@ -2225,11 +2225,174 @@
    %7D%0A  %7D
+%0A%0A  @NotNull%0A  @Override%0A  public String getId() %7B%0A    return getHelpTopic();%0A  %7D%0A%0A  @Override%0A  public Runnable enableSearch(String option) %7B%0A    return null;%0A  %7D
 %0A%7D%0A

enable search for file colors (IDEA-58700)