Custom folding classes moved to platform, other refactoring
[idea/community.git] / platform / lang-impl / src / com / intellij / lang / customFolding / CustomFoldingConfigurable.java
1 package com.intellij.lang.customFolding;
2
3 import com.intellij.openapi.options.ConfigurationException;
4 import com.intellij.openapi.options.SearchableConfigurable;
5 import com.intellij.openapi.project.Project;
6 import org.jetbrains.annotations.Nls;
7 import org.jetbrains.annotations.NotNull;
8
9 import javax.swing.*;
10
11 /**
12  * @author Rustam Vishnyakov
13  */
14 public class CustomFoldingConfigurable implements SearchableConfigurable {
15
16   private CustomFoldingConfiguration myConfiguration;
17   private CustomFoldingSettingsPanel mySettingsPanel;
18
19   public CustomFoldingConfigurable(Project project) {
20     myConfiguration = CustomFoldingConfiguration.getInstance(project);
21     mySettingsPanel = new CustomFoldingSettingsPanel();
22   }
23
24   @NotNull
25   @Override
26   public String getId() {
27     return getDisplayName();
28   }
29
30   @Override
31   public Runnable enableSearch(String option) {
32     return null;
33   }
34
35   @Nls
36   @Override
37   public String getDisplayName() {
38     return "Custom Folding"; //TODO<rv> Move to resources
39   }
40
41   @Override
42   public Icon getIcon() {
43     return null;
44   }
45
46   @Override
47   public String getHelpTopic() {
48     return null; //TODO<rv>: Define help topic
49   }
50
51   @Override
52   public JComponent createComponent() {
53     return mySettingsPanel.getComponent();
54   }
55
56   @Override
57   public boolean isModified() {
58     return myConfiguration.getState().isEnabled() != mySettingsPanel.isEnabled() ||
59            !myConfiguration.getState().getStartFoldingPattern().equals(mySettingsPanel.getStartPattern()) ||
60            !myConfiguration.getState().getEndFoldingPattern().equals(mySettingsPanel.getEndPattern()) ||
61            !myConfiguration.getState().getDefaultCollapsedStatePattern().equals(mySettingsPanel.getCollapsedStatePattern());
62   }
63
64   @Override
65   public void apply() throws ConfigurationException {
66     myConfiguration.getState().setStartFoldingPattern(mySettingsPanel.getStartPattern());
67     myConfiguration.getState().setEndFoldingPattern(mySettingsPanel.getEndPattern());
68     myConfiguration.getState().setEnabled(mySettingsPanel.isEnabled());
69     myConfiguration.getState().setDefaultCollapsedStatePattern(mySettingsPanel.getCollapsedStatePattern());
70   }
71
72   @Override
73   public void reset() {
74     mySettingsPanel.setStartPattern(myConfiguration.getState().getStartFoldingPattern());
75     mySettingsPanel.setEndPattern(myConfiguration.getState().getEndFoldingPattern());
76     mySettingsPanel.setEnabled(myConfiguration.getState().isEnabled());
77     mySettingsPanel.setCollapsedStatePattern(myConfiguration.getState().getDefaultCollapsedStatePattern());
78   }
79
80   @Override
81   public void disposeUIResources() {
82   }
83 }