+
+ @Nullable
+ @Override
+ public State getState() {
+ State state = new State();
+ for (RunProfile profile : myEnabledRunProfiles) {
+ RunConfiguration runConfiguration = ObjectUtils.tryCast(profile, RunConfiguration.class);
+ if (runConfiguration != null) {
+ RunConfigurationDescriptor descriptor = new RunConfigurationDescriptor();
+ descriptor.myType = runConfiguration.getType().getId();
+ descriptor.myName = runConfiguration.getName();
+ state.myEnabledRunConfigurations.add(descriptor);
+ }
+ }
+ return state;
+ }
+
+ @Override
+ public void loadState(State state) {
+ List<RunConfiguration> configurations = ContainerUtil.newArrayList();
+ RunManagerImpl runManager = RunManagerImpl.getInstanceImpl(myProject);
+ for (RunConfigurationDescriptor descriptor : state.myEnabledRunConfigurations) {
+ RunnerAndConfigurationSettings settings = runManager.findConfigurationByTypeAndName(descriptor.myType,
+ descriptor.myName);
+ RunConfiguration configuration = settings != null ? settings.getConfiguration() : null;
+ if (configuration != null) {
+ configurations.add(configuration);
+ }
+ }
+ myEnabledRunProfiles.clear();
+ myEnabledRunProfiles.addAll(configurations);
+ }
+
+ static class State {
+ @Tag("enabled-run-configurations")
+ @AbstractCollection(surroundWithTag = false)
+ List<RunConfigurationDescriptor> myEnabledRunConfigurations = ContainerUtil.newArrayList();
+ }
+
+ @Tag("run-configuration")
+ static class RunConfigurationDescriptor {
+ @Attribute("type")
+ String myType;
+
+ @Attribute("name")
+ String myName;
+ }