[PyCharm] DataView (fix): Fixed wrong dataView panel size in Dialog window. #PY-70685 Fixed

Also added saving of dialog window size and position.

GitOrigin-RevId: 9a1f6f70f98f8acec0813d585dae656901f2c7e3
This commit is contained in:
Nikita Pavlenko
2024-11-26 11:40:22 +00:00
committed by intellij-monorepo-bot
parent 1a011c6040
commit 4653aff32e
2 changed files with 25 additions and 18 deletions
@@ -64,6 +64,8 @@ class PyDataViewDialog(private val myProject: Project, value: PyDebugValue) : Di
init()
}
override fun getDimensionServiceKey() = "#com.jetbrains.python.debugger.containerview.PyDataViewDialog"
private fun createBottomElements(): JPanel {
val colored = JBCheckBox(PyBundle.message("debugger.data.view.colored.cells"))
colored.setSelected(isColoringEnabled(myProject))
@@ -6,7 +6,7 @@ import com.intellij.codeInsight.completion.PrioritizedLookupElement
import com.intellij.codeInsight.lookup.LookupElementBuilder
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.diagnostic.thisLogger
import com.intellij.openapi.editor.EditorFactory
import com.intellij.openapi.editor.ex.EditorEx
import com.intellij.openapi.observable.properties.AtomicBooleanProperty
@@ -15,7 +15,11 @@ import com.intellij.openapi.util.NlsContexts
import com.intellij.openapi.util.NlsSafe
import com.intellij.ui.EditorTextField
import com.intellij.ui.JBColor
import com.intellij.ui.dsl.builder.*
import com.intellij.ui.dsl.builder.Align
import com.intellij.ui.dsl.builder.AlignX
import com.intellij.ui.dsl.builder.Cell
import com.intellij.ui.dsl.builder.panel
import com.intellij.ui.dsl.builder.text
import com.intellij.util.TextFieldCompletionProvider
import com.intellij.util.ui.UIUtil
import com.jetbrains.python.PyBundle
@@ -114,10 +118,8 @@ open class PyDataViewerPanel(@JvmField protected val project: Project, val frame
init {
PyDataViewCompletionProvider().apply(sliceTextFieldOldTable)
val panel = panel {
row {
cell(tablePanel).align(Align.FILL).resizableColumn()
}.resizableRow()
add(tablePanel, BorderLayout.CENTER)
add(panel {
row {
cell(sliceTextFieldOldTable).align(AlignX.FILL).resizableColumn()
label(PyBundle.message("form.data.viewer.format"))
@@ -126,9 +128,7 @@ open class PyDataViewerPanel(@JvmField protected val project: Project, val frame
row {
errorLabel = text("").apply { component.setForeground(JBColor.RED) }
}
}
add(panel, BorderLayout.CENTER)
}, BorderLayout.SOUTH)
setupChangeListener()
}
@@ -189,7 +189,11 @@ open class PyDataViewerPanel(@JvmField protected val project: Project, val frame
protected open fun getOrCreateMainTable(): AbstractDataViewTable {
val mainTable = JBTableWithRowHeaders(PyDataView.isAutoResizeEnabled(project))
mainTable.scrollPane.border = BorderFactory.createEmptyBorder()
tablePanel.add(mainTable.scrollPane, BorderLayout.CENTER)
tablePanel.apply {
add(mainTable.scrollPane, BorderLayout.CENTER)
revalidate()
repaint()
}
table = mainTable
return mainTable
}
@@ -245,13 +249,13 @@ open class PyDataViewerPanel(@JvmField protected val project: Project, val frame
ApplicationManager.getApplication().invokeLater { setError(e.localizedMessage, modifier) } //NON-NLS
}
catch (e: PyDebuggerException) {
LOG.error(e)
thisLogger().error(e)
}
catch (e: Exception) {
if (e.message?.let { "Numpy is not available" in it } == true) {
setError(PyBundle.message("debugger.data.view.numpy.is.not.available", type), modifier)
}
LOG.error(e)
thisLogger().error(e)
}
}
}
@@ -288,8 +292,10 @@ open class PyDataViewerPanel(@JvmField protected val project: Project, val frame
}
}
protected open fun updateUI(chunk: ArrayChunk, originalDebugValue: PyDebugValue,
strategy: DataViewStrategy, modifier: Boolean) {
protected open fun updateUI(
chunk: ArrayChunk, originalDebugValue: PyDebugValue,
strategy: DataViewStrategy, modifier: Boolean,
) {
val debugValue = chunk.value
val model = strategy.createTableModel(chunk.rows, chunk.columns, this, debugValue)
model.addToCache(chunk)
@@ -392,16 +398,15 @@ open class PyDataViewerPanel(@JvmField protected val project: Project, val frame
}
}
catch (e: Exception) {
LOG.error(e)
thisLogger().error(e)
}
return values
}
}
open fun closeEditorTabs() {}
open fun closeEditorTabs() = Unit
companion object {
private val LOG = Logger.getInstance(PyDataViewerPanel::class.java)
private const val MODIFIED_VARIABLE_FORMAT = "%s*"
}
}
}