package org.elixir_lang.jps.mix; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.model.JpsElementChildRole; import org.jetbrains.jps.model.JpsProject; import org.jetbrains.jps.model.ex.JpsCompositeElementBase; import org.jetbrains.jps.model.ex.JpsElementChildRoleBase; /** * Created by zyuyou on 2015/5/26. * */ public class JpsMixConfigurationExtension extends JpsCompositeElementBase<JpsMixConfigurationExtension> { public static final JpsElementChildRole<JpsMixConfigurationExtension> ROLE = JpsElementChildRoleBase.create("Mix"); private MixSettingsState myState; public JpsMixConfigurationExtension(MixSettingsState state){ myState = state; } @NotNull @Override public JpsMixConfigurationExtension createCopy() { return new JpsMixConfigurationExtension(new MixSettingsState(myState)); } public void setMixSettingsState(MixSettingsState myState) { this.myState = myState; } public MixSettingsState getMixSettingsState () { return myState; } public String getMixPath(){ return myState.myMixPath; } @Nullable public static JpsMixConfigurationExtension getExtension(@Nullable JpsProject project){ return null != project ? project.getContainer().getChild(ROLE) : null; } @NotNull public static JpsMixConfigurationExtension getOrCreateExtension(@NotNull JpsProject project){ JpsMixConfigurationExtension extension = getExtension(project); if(extension == null){ extension = project.getContainer().setChild(ROLE, new JpsMixConfigurationExtension(new MixSettingsState())); } return extension; } }