public static void setBuildArtifactBeforeRunOption( @NotNull JComponent runConfigurationEditorComponent, Project project, @NotNull Artifact artifact, final boolean enable) { final DataContext dataContext = DataManager.getInstance().getDataContext(runConfigurationEditorComponent); final ConfigurationSettingsEditorWrapper editor = ConfigurationSettingsEditorWrapper.CONFIGURATION_EDITOR_KEY.getData(dataContext); if (editor != null) { List<BeforeRunTask> tasks = editor.getStepsBeforeLaunch(); List<AbstractArtifactsBeforeRunTask> myTasks = new ArrayList<AbstractArtifactsBeforeRunTask>(); for (BeforeRunTask task : tasks) { if (task instanceof AbstractArtifactsBeforeRunTask) { myTasks.add((AbstractArtifactsBeforeRunTask) task); } } if (enable && myTasks.isEmpty()) { AbstractArtifactsBeforeRunTask task = new BuildArtifactsBeforeRunTask(project); task.addArtifact(artifact); task.setEnabled(true); editor.addBeforeLaunchStep(task); } else { for (AbstractArtifactsBeforeRunTask task : myTasks) { if (enable) { task.addArtifact(artifact); task.setEnabled(true); } else { task.removeArtifact(artifact); if (task.getArtifactPointers().isEmpty()) { task.setEnabled(false); } } } } } }