package com.atsebak.embeddedlinuxjvm.runner.conf;
import com.atsebak.embeddedlinuxjvm.localization.EmbeddedLinuxJVMBundle;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.execution.configurations.ConfigurationTypeUtil;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.IconLoader;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
public class EmbeddedLinuxJVMConfigurationType implements ConfigurationType {
private static final String NAME = "Embedded Linux JVM";
private static final String DESCRIPTION = EmbeddedLinuxJVMBundle.getString("pi.app.description");
private ConfigurationFactory configurationFactory;
/**
* Builds the configuration from the factory
*/
public EmbeddedLinuxJVMConfigurationType() {
configurationFactory = new ConfigurationFactory(this) {
@Override
public RunConfiguration createTemplateConfiguration(Project project) {
return new EmbeddedLinuxJVMRunConfiguration(project, this, NAME);
}
};
}
public static EmbeddedLinuxJVMConfigurationType getInstance() {
return ConfigurationTypeUtil.findConfigurationType(EmbeddedLinuxJVMConfigurationType.class);
}
/**
* Get the name of the App
*
* @return
*/
@Override
public String getDisplayName() {
return NAME;
}
/**
* Get the Configuration Description
*
* @return
*/
@Override
public String getConfigurationTypeDescription() {
return DESCRIPTION;
}
/**
* Gets the Icon for the runner
* @return
*/
@Override
public Icon getIcon() {
return IconLoader.getIcon("/pi.png");
}
/**
* Gets the ID of the Runner
* @return
*/
@NotNull
@Override
public String getId() {
return getConfigurationTypeDescription();
}
/**
* Gets the Factory
* @return
*/
@Override
public ConfigurationFactory[] getConfigurationFactories() {
return new ConfigurationFactory[]{configurationFactory};
}
public ConfigurationFactory getFactory() {
return configurationFactory;
}
}