package de.jigp.plugin; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.ProjectComponent; import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.util.xmlb.XmlSerializerUtil; import de.jigp.plugin.configuration.Configuration; import de.jigp.plugin.configuration.PluginConfigurationPanel; import org.jetbrains.annotations.NotNull; import javax.swing.*; @State( name = "GeneratorPluginComponent", storages = { @Storage(id = "idGeneratorPluginComponent", file = "$PROJECT_FILE$")}) public class GeneratorPluginComponent implements ProjectComponent, Configurable, PersistentStateComponent<Configuration> { private PluginConfigurationPanel configurationPanel; private Configuration configuration; @NotNull public String getComponentName() { return "Generate DTO, wrapper or builder for Interface with Getters or a given class"; } public void initComponent() { if (configuration == null) { configuration = new Configuration(); } GeneratorPluginContext.setConfiguration(configuration); } public void disposeComponent() { } public void projectOpened() { } public void projectClosed() { } public void apply() throws ConfigurationException { configuration = configurationPanel.getConfiguration(); GeneratorPluginContext.setConfiguration(configuration); } public void reset() { configurationPanel.setConfiguration(configuration); } public JComponent createComponent() { if (configurationPanel == null) { configurationPanel = new PluginConfigurationPanel(); } return configurationPanel.getJPanel(); } public void disposeUIResources() { configurationPanel = null; } public boolean isModified() { return !this.configuration.equals(configurationPanel.getConfiguration()); } public String getDisplayName() { return "Generate Dto, Wrapper or Builder"; } public String getHelpTopic() { return "This Plugin generates 3 types of classes for a given Java Interface or Java Class."; } public Icon getIcon() { return null; } public Configuration getState() { return configuration; } public void loadState(Configuration pluginConfiguration) { configuration = new Configuration(); XmlSerializerUtil.copyBean(pluginConfiguration, configuration); configuration.reinitNullValues(); GeneratorPluginContext.setConfiguration(configuration); } }