package net.jangaroo.ide.idea;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.util.*;
import net.jangaroo.ide.idea.ui.JangarooToolConfiguration;
import org.jdom.Element;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
/**
* An application component for the Jangaroo Compiler "jooc".
*/
//@State(name="Jangaroo IDEA Plugin", storages={ @Storage(id="other", file = "$APP_CONFIG$" )}) //"$OPTIONS$"
public class JoocApplicationComponent implements ApplicationComponent, Configurable, JDOMExternalizable { // PersistentStateComponent<JoocApplicationComponent> {
private String jangarooHomeDir;
private transient JangarooToolConfiguration form;
private static final String JANGAROO_LARGE_ICON_URL = "/net/jangaroo/jooley-48x48.png";
public JoocApplicationComponent() {
}
public void initComponent() {
// TODO: insert component initialization logic here
}
public void disposeComponent() {
// TODO: insert component disposal logic here
}
@NotNull
public String getComponentName() {
return "JoocApplicationComponent";
}
@Nls
public String getDisplayName() {
return "Jangaroo Settings";
}
public Icon getIcon() {
return IconLoader.getIcon(JANGAROO_LARGE_ICON_URL);
}
public String getHelpTopic() {
return null;
}
public JComponent createComponent() {
if (form==null) {
form = new JangarooToolConfiguration();
}
return form.getRootComponent();
}
public boolean isModified() {
return form!=null && form.isModified(this);
}
public void apply() throws ConfigurationException {
if (form!=null) {
form.getData(this);
}
}
public void reset() {
if (form!=null) {
form.setData(this);
}
}
public void disposeUIResources() {
Disposer.dispose(form);
form = null;
}
public String getJangarooHomeDir() {
return jangarooHomeDir;
}
public void setJangarooHomeDir(String jangarooHomeDir) {
this.jangarooHomeDir = jangarooHomeDir;
}
/*
public JoocApplicationComponent getState() {
return this;
}
public void loadState(JoocApplicationComponent state) {
form = null;
jangarooHomeDir = state.jangarooHomeDir;
}
*/
public void readExternal(Element element) throws InvalidDataException {
//JDOMClassExternalizer.readExternal(this, element);
}
public void writeExternal(Element element) throws WriteExternalException {
//JDOMClassExternalizer.writeExternal(this, element);
}
}