package krasa.grepconsole.plugin; import javax.swing.*; import krasa.grepconsole.action.HighlightManipulationAction; import krasa.grepconsole.filter.support.SoundMode; import krasa.grepconsole.gui.SettingsContext; import krasa.grepconsole.gui.SettingsDialog; import krasa.grepconsole.model.Sound; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; public class MyConfigurable implements Configurable { private SettingsDialog form; private ServiceManager serviceManager = ServiceManager.getInstance(); public GrepConsoleApplicationComponent applicationComponent = GrepConsoleApplicationComponent.getInstance(); HighlightManipulationAction currentAction; @Nls @Override public String getDisplayName() { return "Grep Console"; } @Nullable public Icon getIcon() { return null; } @Override @Nullable @NonNls public String getHelpTopic() { return null; } @Override public JComponent createComponent() { if (form == null) { form = new SettingsDialog(applicationComponent.getState().clone()); } return form.getRootComponent(); } @Override public boolean isModified() { return form != null && form.isSettingsModified(applicationComponent.getState()); } @Override public void apply() throws ConfigurationException { PluginState formSettings = form.getSettings(); applicationComponent.loadState(formSettings.clone()); serviceManager.resetSettings(); applicationComponent.initFoldingCache(); Sound.soundMode = SoundMode.DISABLED; if (currentAction != null) { currentAction.applySettings(); } Sound.soundMode = SoundMode.ENABLED; } @Override public void reset() { if (form != null) { form.importFrom(applicationComponent.getState().clone()); } } @Override public void disposeUIResources() { form = null; } public void prepareForm(SettingsContext settingsContext) { form = new SettingsDialog(applicationComponent.getState().clone(), settingsContext); } public void setCurrentAction(HighlightManipulationAction currentEditor) { this.currentAction = currentEditor; } }