[Java] Add 3 state combobox to compile modules in parallel in CompilerUIConfigurableKt

IDEA-352162

GitOrigin-RevId: 5262222db58cb535dd1055d7cc01c9c8269d818f
This commit is contained in:
Georgii Ustinov
2024-07-30 14:30:49 +03:00
committed by intellij-monorepo-bot
parent a9950b4754
commit 79b9bf1b34
4 changed files with 40 additions and 6 deletions

View File

@@ -6,6 +6,7 @@ import com.intellij.codeInsight.NullableNotNullManager
import com.intellij.compiler.CompilerConfiguration
import com.intellij.compiler.CompilerConfigurationImpl
import com.intellij.compiler.CompilerWorkspaceConfiguration
import com.intellij.compiler.JpsParallelCompilationOption
import com.intellij.compiler.impl.javaCompiler.javac.JavacConfiguration
import com.intellij.compiler.options.CompilerOptionsFilter.Setting
import com.intellij.compiler.options.CompilerUIConfigurable.applyResourcePatterns
@@ -25,10 +26,7 @@ import com.intellij.util.execution.ParametersListUtil
import com.intellij.util.ui.UIUtil
import org.jetbrains.annotations.NonNls
import java.util.*
import javax.swing.JButton
import javax.swing.JCheckBox
import javax.swing.JComponent
import javax.swing.JTextField
import javax.swing.*
class CompilerUIConfigurableKt(val project: Project) : DslConfigurableBase(), SearchableConfigurable {
private val disabledSettings: MutableSet<Setting> = EnumSet.noneOf(Setting::class.java)
@@ -44,6 +42,8 @@ class CompilerUIConfigurableKt(val project: Project) : DslConfigurableBase(), Se
private lateinit var cbEnableAutomake: JCheckBox
private lateinit var cbParallelCompilation: JCheckBox
private lateinit var comboboxJpsParallelCompilation: JComboBox<JpsParallelCompilationOption>
lateinit var sharedHeapSizeField: JTextField
lateinit var sharedVMOptionsField: ExpandableTextField
lateinit var heapSizeField: JTextField
@@ -101,6 +101,13 @@ class CompilerUIConfigurableKt(val project: Project) : DslConfigurableBase(), Se
cbRebuildOnDependencyChange = checkBox(JavaCompilerBundle.message("settings.rebuild.module.on.dependency.change"))
.component
}
row {
label(JavaCompilerBundle.message("settings.compile.independent.modules.in.parallel"))
.comment
comboboxJpsParallelCompilation = comboBox(JpsParallelCompilationOption.entries)
.comment(JavaCompilerBundle.message("settings.parallel.module.compile.may.require.larger.heap.size"))
.component
}
}
group(JavaCompilerBundle.message("settings.build.process.group")) {
@@ -184,7 +191,7 @@ class CompilerUIConfigurableKt(val project: Project) : DslConfigurableBase(), Se
Setting.AUTO_SHOW_FIRST_ERROR_IN_EDITOR to listOf(cbAutoShowFirstError),
Setting.DISPLAY_NOTIFICATION_POPUP to listOf(cbDisplayNotificationPopup),
Setting.AUTO_MAKE to listOf(cbEnableAutomake),
Setting.PARALLEL_COMPILATION to listOf(cbParallelCompilation),
Setting.PARALLEL_COMPILATION to listOf(cbParallelCompilation, comboboxJpsParallelCompilation),
Setting.REBUILD_MODULE_ON_DEPENDENCY_CHANGE to listOf(cbRebuildOnDependencyChange),
Setting.HEAP_SIZE to listOf(heapSizeField, sharedHeapSizeField),
Setting.COMPILER_VM_OPTIONS to listOf(vmOptionsField, sharedVMOptionsField),
@@ -217,6 +224,9 @@ class CompilerUIConfigurableKt(val project: Project) : DslConfigurableBase(), Se
if (!disabledSettings.contains(Setting.PARALLEL_COMPILATION) && configuration.isParallelCompilationEnabled != cbParallelCompilation.isSelected) {
configuration.isParallelCompilationEnabled = cbParallelCompilation.isSelected
}
if (!disabledSettings.contains(Setting.PARALLEL_COMPILATION)) {
workspaceConfiguration.JPS_PARALLEL_COMPILATION = comboboxJpsParallelCompilation.getItemAt(comboboxJpsParallelCompilation.selectedIndex)
}
if (!disabledSettings.contains(Setting.REBUILD_MODULE_ON_DEPENDENCY_CHANGE)) {
workspaceConfiguration.REBUILD_ON_DEPENDENCY_CHANGE = cbRebuildOnDependencyChange.isSelected
}
@@ -259,6 +269,7 @@ class CompilerUIConfigurableKt(val project: Project) : DslConfigurableBase(), Se
cbEnableAutomake.setSelected(workspaceConfiguration.MAKE_PROJECT_ON_SAVE)
cbParallelCompilation.setSelected(configuration.isParallelCompilationEnabled())
cbRebuildOnDependencyChange.setSelected(workspaceConfiguration.REBUILD_ON_DEPENDENCY_CHANGE)
comboboxJpsParallelCompilation.selectedItem = workspaceConfiguration.JPS_PARALLEL_COMPILATION
val heapSize = workspaceConfiguration.COMPILER_PROCESS_HEAP_SIZE
heapSizeField.text = if (heapSize > 0) heapSize.toString() else ""
// for compatibility with older projects
@@ -291,7 +302,9 @@ class CompilerUIConfigurableKt(val project: Project) : DslConfigurableBase(), Se
isModified = isModified || !disabledSettings.contains(Setting.AUTO_MAKE)
&& ComparingUtils.isModified(cbEnableAutomake, workspaceConfiguration.MAKE_PROJECT_ON_SAVE)
isModified = isModified || !disabledSettings.contains(Setting.PARALLEL_COMPILATION)
&& ComparingUtils.isModified(cbParallelCompilation, configuration.isParallelCompilationEnabled())
&& (ComparingUtils.isModified(cbParallelCompilation, configuration.isParallelCompilationEnabled()))
isModified = isModified || !disabledSettings.contains(Setting.PARALLEL_COMPILATION)
&& (comboboxJpsParallelCompilation.selectedItem != workspaceConfiguration.JPS_PARALLEL_COMPILATION)
isModified = isModified || !disabledSettings.contains(Setting.REBUILD_MODULE_ON_DEPENDENCY_CHANGE)
&& ComparingUtils.isModified(cbRebuildOnDependencyChange, workspaceConfiguration.REBUILD_ON_DEPENDENCY_CHANGE)
isModified = isModified || !disabledSettings.contains(Setting.HEAP_SIZE)

View File

@@ -130,6 +130,9 @@ settings.actions.on.save.page.build.project.on.save.checkbox=Build project
settings.actions.on.save.page.build.project.on.save.checkbox.comment=Not triggered while running/debugging
settings.actions.on.save.page.compiler.settings.link=Compiler settings...
settings.compile.independent.modules.in.parallel=Compile independent modules in parallel
settings.compile.independent.modules.in.parallel.enabled = Enabled
settings.compile.independent.modules.in.parallel.automatic = Automatic
settings.compile.independent.modules.in.parallel.disabled = Disabled
settings.rebuild.module.on.dependency.change=Rebuild module on dependency change
settings.size.mbytes=Mbytes
settings.build.process.group=Build Process

View File

@@ -36,6 +36,8 @@ public final class CompilerWorkspaceConfiguration implements PersistentStateComp
@Deprecated(forRemoval = true)
public Boolean PARALLEL_COMPILATION = null;
public JpsParallelCompilationOption JPS_PARALLEL_COMPILATION = JpsParallelCompilationOption.AUTOMATIC;
public int COMPILER_PROCESS_HEAP_SIZE = 0;
public String COMPILER_PROCESS_ADDITIONAL_VM_OPTIONS = "";
public boolean REBUILD_ON_DEPENDENCY_CHANGE = true;

View File

@@ -0,0 +1,16 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.compiler
import com.intellij.openapi.compiler.JavaCompilerBundle
enum class JpsParallelCompilationOption {
ENABLED,
AUTOMATIC,
DISABLED;
override fun toString(): String = when (this) {
ENABLED -> JavaCompilerBundle.message("settings.compile.independent.modules.in.parallel.enabled")
AUTOMATIC -> JavaCompilerBundle.message("settings.compile.independent.modules.in.parallel.automatic")
DISABLED -> JavaCompilerBundle.message("settings.compile.independent.modules.in.parallel.disabled")
}
}