Commit 44bcaa9c authored by Roman Shevchenko's avatar Roman Shevchenko Committed by intellij-monorepo-bot
Browse files

[ui] proper logic/UI separation in memory settings dialog (follow-up to IDEA-306970)

GitOrigin-RevId: 6e699c295900dc3cfbdf9a4ef4b7ffaf3dbd4b2f
parent b5d89473
Branches unavailable Tags unavailable
No related merge requests found
Showing with 26 additions and 33 deletions
+26 -33
......@@ -8,6 +8,7 @@ import com.intellij.openapi.options.OptionsBundle;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.ValidationInfo;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.ui.UIBundle;
import com.intellij.util.ui.IoErrorText;
import org.jetbrains.annotations.ApiStatus;
......@@ -20,14 +21,12 @@ import java.io.IOException;
@ApiStatus.NonExtendable
public class EditMemorySettingsDialog extends DialogWrapper {
private static final int MIN_VALUE = 256;
static final int HEAP_INC = 512;
private static final int MIN_VALUE = 256, HEAP_INCREMENT = 512;
private final VMOptions.MemoryKind myOption;
private final int myLowerBound;
private Action mySaveAndExitAction;
private Action mySaveAction;
private final EditMemorySettingsPanel content;
private Action mySaveAndExitAction, mySaveAction;
public EditMemorySettingsDialog() {
this(VMOptions.MemoryKind.HEAP, false);
......@@ -42,11 +41,32 @@ public class EditMemorySettingsDialog extends DialogWrapper {
myOption = option;
myLowerBound = Math.max(option == VMOptions.MemoryKind.HEAP ? VMOptions.readOption(VMOptions.MemoryKind.MIN_HEAP, false) : 0, MIN_VALUE);
setTitle(DiagnosticBundle.message("change.memory.title"));
content = new EditMemorySettingsPanel(option, memoryLow);
content = new EditMemorySettingsPanel(option, memoryLow, getSuggestedValue(memoryLow, myOption));
init();
initValidation();
}
private static int getSuggestedValue(boolean memoryLow, VMOptions.MemoryKind option) {
var current = VMOptions.readOption(option, true);
var suggested = 0;
if (memoryLow && option == VMOptions.MemoryKind.HEAP) {
var cap = Registry.intValue("max.suggested.heap.size");
if (current > 0) {
suggested = current + HEAP_INCREMENT;
if (suggested > cap) suggested = Math.max(cap, current);
}
else {
suggested = cap;
}
}
else {
suggested = VMOptions.readOption(option, false);
if (suggested <= 0) suggested = current;
if (suggested <= 0) suggested = MIN_VALUE;
}
return suggested;
}
@Override
protected JComponent createCenterPanel() {
return content.panel;
......
......@@ -2,22 +2,15 @@
package com.intellij.diagnostic
import com.intellij.icons.AllIcons
import com.intellij.openapi.util.registry.Registry
import com.intellij.ui.components.JBLabel
import com.intellij.ui.components.JBTextField
import com.intellij.ui.dsl.builder.*
import com.intellij.util.system.CpuArch
import kotlin.math.max
private const val MIN_VALUE = 256
internal class EditMemorySettingsPanel(private val option: VMOptions.MemoryKind, private val memoryLow: Boolean) {
internal class EditMemorySettingsPanel(private val option: VMOptions.MemoryKind, private val memoryLow: Boolean, private val suggested: Int) {
lateinit var newValueField: JBTextField
@JvmField
val panel = panel {
val current = VMOptions.readOption(option, true)
val file = EditMemorySettingsService.getInstance().userOptionsFile ?: throw IllegalStateException()
......@@ -41,7 +34,6 @@ internal class EditMemorySettingsPanel(private val option: VMOptions.MemoryKind,
val optionLabel = JBLabel(option.label() + ':')
.apply { toolTipText = '-' + option.optionName }
row(optionLabel) {
val suggested = getSuggested(current)
newValueField = textField()
.text(suggested.toString())
.columns(5)
......@@ -60,23 +52,4 @@ internal class EditMemorySettingsPanel(private val option: VMOptions.MemoryKind,
text(DiagnosticBundle.message("change.memory.file", file.toString()), maxLineLength = MAX_LINE_LENGTH_NO_WRAP)
}
}
private fun getSuggested(current: Int): Int {
if (memoryLow && option == VMOptions.MemoryKind.HEAP) {
val cap = if (CpuArch.isIntel32()) 800 else Registry.intValue("max.suggested.heap.size")
if (current > 0) {
val result = current + EditMemorySettingsDialog.HEAP_INC
return if (result > cap) max(cap, current) else result
}
else {
return cap
}
}
else {
var result = VMOptions.readOption(option, false)
if (result <= 0) result = current
if (result <= 0) result = MIN_VALUE
return result
}
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment